我正在尝试创建测试证书并签署我创建的.MSI文件。在购买真正的安全证书之前,我需要让测试版与签名的.MSI一起使用。
我已执行以下步骤来签署我的.MSI文件。一切都成功完成,并显示一条消息,表明在最后一步之后成功签署了1个文件。
makecert.exe -sv c:\Test\mykey.pvk -n "CN=WTS" c:\Test\myCert.cer
cert2spc.exe c:\Test\mycert.cer c:\Test\mycert.spc
pvk2pfx -pvk c:\Test\mykey.pvk -pi password -spc c:\Test\mycert.spc -pfx c:\Test\mycert.pfx -po password
signTool sign /f c:\Test\mycert.pfx /p password /v c:\Test\test.msi
执行这些步骤后,我运行.MSI文件(为.MSI修改的日期确实会更改为与运行signTool步骤的时间相匹配)。显示此.MSI来自未知发布者的警告消息仍显示为“发布者:未知”。
我错过了一步还是什么?一切似乎都正常,我从来没有看到任何错误,但我的文件似乎没有签名。
答案 0 :(得分:9)
您的文件已签名。 Windows将发布者声明为未知,因为它不信任签名中的发布者标识。
请记住,在数字签名的世界中,您始终需要同时验证至少两件事,否则整个练习都毫无意义。您必须检查签名上的名称,并且还需要从您已信任的内容(例如,证书颁发机构或手动添加为受信任的证书)中找到信任链接,直至您正在检查的签名。只有这样才能在签名上信任该名称,并将其显示给操作系统用户。
在您的网络浏览器中,转到“工具”/“Internet选项”/“内容/发布者/证书”,然后将测试证书添加到“受信任的发布者”。
(另一个浏览器可能在“设置/显示高级设置/ HTTPS / SSL /管理证书”下具有相同的功能。)
然后重试。它不起作用,但我不知道为什么,这是一个有益的游戏。
目前尚不清楚,如果您的证书是自制的,并且没有证书颁发机构支持,则Windows上是否存在建立信任链的方法。 This source说:
如果使用测试(自创)证书,则使用安装对话框 将显示“未知发布者”消息。对于已部署的应用 在组织内部,这是一种可接受的做法。“
但是,您可以按照here所述创建自己的证书颁发机构,并在受信任的根证书颁发机构下添加CA证书。通过执行此操作,您基本上可以让该CA颁发的任何证书签署任何内容并受Windows信任。
答案 1 :(得分:2)
如果您在签名包时未使用开关“/ d”指定说明,也会发生这种情况。请在此页面的“签名命令选项”下查看更多详细信息: http://msdn.microsoft.com/en-us/library/8s9b9yaz.aspx
答案 2 :(得分:2)
我遇到了同样的问题,发现微软不再信任带有“sha 1”算法的证书。
我通过要求我的CA替换证书来解决问题。