我正在尝试签署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文件不报告任何添加的证书。
答案 0 :(得分:3)
您是否尝试通过Silverlight项目的项目属性中的“签名”选项卡签署应用程序?如果您的项目属性与我的相似,那么实际上可能有两个签名选项卡(一个用于强力命名程序集) - 您想要的那个可能是第二个。以下是解释签署XAP的步骤的链接:http://blogs.infosupport.com/blogs/alexb/archive/2010/05/10/silverlight-4-digitally-signing-a-xap.aspx。看看这是否有助于解决问题。
还要记住,仅仅签署XAP是不够的 - 您必须将证书导入受信任的根存储(它看起来不像您正在做的那样)。单击“签名”选项卡中的“更多详细信息...”按钮。它可能会声明此CA根证书不受信任。执行以下操作:
应出现另一个对话框,说明它已安装。现在重新编译你的应用程序,它应该可以正常工作。
希望这会有所帮助......
克里斯