【发布时间】:2016-05-16 21:36:49
【问题描述】:
关于我在尝试使用 SHA1/SHA256 进行双重签名时遇到的失败问题。
我已经拥有 SHA256 代码签名证书几年了,但在新的一年(2016 年)之前,我开始使用 /fd SHA256 来使哈希算法符合 Microsoft 弃用的 SHA1。
这很好用,但是签名哈希当然不能在旧操作系统上验证。我不关心 XP,但我仍然关心 Vista。
我首先使用以下方式签署 SHA1:
signtool sign /fd SHA1 /f "cert.pfx" /p "password" /t http://timestamp.verisign.com/scripts/timsetamp.dll "file"
然后我尝试我的双重签名:
signtool sign /as /fd SHA256 /f "cert.pfx" /p "password" /tr http://timestamp.globalsign.com/?signature=sha2 "file"
signtool 给了我这个:
Done Adding Additional Store
SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024846/0x80070032)
现在我可以使用单一算法(SHA1 或 SHA256)成功签署文件,但无法添加第二个签名。我唯一的猜测是,因为我对这两种算法都使用了相同的证书,所以它不喜欢这样。我是否需要为每种算法提供不同的物理证书?
只是想知道,因为在新的一年之前,我多年来一直使用带有 SHA1 算法的 SHA256 证书,并且它在所有操作系统上都经过验证。
【问题讨论】:
-
这里有任何更新/解决方案吗?
-
不,我最终放弃了双重标志,因为无论如何 SHA1 将在今年年底完全被杀死,而 Vista 是一个化石。我很确定它不起作用,因为我试图为两种签名算法使用相同的证书,并且不愿意为此目的获得单独的 SHA1 证书。
-
谢谢,我最终只是在一个干净且独立的 Windows 10 VM 上安装了 Windows 10 SDK,这个错误就消失了,双重签名对我有用。我试图在安装了 Windows 8 或 Windows 10 SDK 的 Windows 7 上进行双重登录,但我无法开始工作。
-
为什么你在第一个标志中使用来自verisign的时间服务器,在第二个标志中使用来自globalsign的时间服务器?