1

我正在尝试签署 Silverlight 4 OOB 应用程序(XAP 文件)。
我使用以下命令:

"C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\signtool.exe" sign /v /f path\to\FILENAME.pfx /p PWD path\to\FILENAME.xap

我得到了回应:

The following certificate was selected:
    Issued to: COMPANY NAME
    Issued by: Thawte Code Signing CA
    Expires:   Wed Dec 01 00:59:59 2010
    SHA1 hash: AE57AF01180BF995C7C5B01E235F296CCF611111

Done Adding Additional Store
Successfully signed: FILENAME.xap

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

但是 XAP 文件没有签名。
如果我在资源管理器中查看属性,则没有列出“数字签名”。如果我尝试安装它,我会得到未经验证的对话框。
如果我对 dll 文件使用完全相同的命令,则签名工作正常,我可以看到应用于文件的数字签名。

这可能是什么原因?
我需要不同的版本signtool.exe吗?

如果重要的话,PFX 最初是从 XP 机器导出的,我试图在 Win7 机器(用于开发)和 Win2008 服务器(构建机器)上运行它,并在两者上获得相同的行为。

编辑:
如果我验证签名 DLL 的证书,我会得到以下信息:

SignTool Error: A certificate chain processed, but terminated in a root 
        certificate which is not trusted by the trust provider.

所以看起来我需要安装一些根证书。

但是,我不确定这解释了为什么 XAP 文件不报告任何正在添加的证书。

4

1 回答 1

3

您是否尝试过通过 Silverlight 项目的项目属性中的签名选项卡对应用程序进行签名?如果你的项目属性和我的一样,实际上可能有两个签名选项卡(一个用于强命名程序集)——你想要的可能是第二个。这是一个解释签署 XAP 的步骤的链接:http: //blogs.infosupport.com/blogs/alexb/a ​​rchive/2010/05/10/silverlight-4-digitally-signing-a-xap.aspx 。看看这是否有助于解决问题。

还请记住,仅仅签署 XAP 是不够的 - 您必须将证书导入受信任的根存储(这看起来不像您正在做的)。单击“签名”选项卡中的“更多详细信息...”按钮。它可能会声明此 CA 根证书不受信任。请执行下列操作:

  • 单击此对话框上的安装证书按钮
  • 选择将所有证书按钮放入以下商店选项,然后单击浏览...按钮
  • 在树中选择受信任的根证书颁发机构项
  • 按确定。

应出现另一个对话框,说明它已安装。现在重新编译您的应用程序,它应该可以正常工作。

希望这可以帮助...

克里斯

于 2010-09-29T07:33:45.207 回答