2015-06-03 109 views
8

我们刚刚从SHA-1切换到SHA-2代码签名证书。 (作为背景信息,我们使用signtool.exe使用COMODO代码签名证书在Windows上签署.exe和.xap文件。)我们使用经过认证的时间戳来执行此操作,以确保Windows在代码签名证书后始终信任代码签名到期。代码签名时是否/如何避免SHA-1签名的时间戳?

现在我注意到时间戳证书仍然是一个SHA-1证书,当使用http://timestamp.comodoca.com/authenticode时。 (详细信息:这是df946a5 ...与主题'CN = COMODO时间戳签名者,O = COMODO CA有限公司,L =索尔福德,S =大曼彻斯特,C = GB'。)

(在Windows上可以看到该证书通过签署.exe文件,然后在其资源管理器属性对话框中转到数字签名选项卡,选择签名并单击详细信息,然后在数字签名详细信息对话框中单击计数器签名并单击详细信息,然后在第二个数字签名详细信息对话框中单击查看证书。如果证书的“签名哈希算法”为“sha1”,证书是SHA-1证书。)

这会是一个问题吗?换句话说,在我们当前的代码签名证书过期后,以及Microsoft Windows将SHA-1视为破碎的算法(最迟在2020年)后,我们的当前签名仍然会被信任?或者Windows会说:“时间戳在代码签名证书的有效范围内,但时间戳是用SHA-1证书签名的,所以我不会相信时间戳,因此我不会相信这个签名”?

我们可以/应该使用另一项服务吗? (不Verisign的http://timestamp.verisign.com/scripts/timstamp.dll,因为它们也仍然使用SHA-1时间标记证书,即6543992 ......。)

+0

试过问科莫多支持吗? – MrTux

+0

调用SignTool.exe时添加/ td SHA256标志,如下所述。这适用于Comodo时间戳服务器。 –

回答

1

更新:看起来你真行,直到1/1/2017

可能,但是要感谢this文章,我发现了如何获取SHA-256时间戳证书。我只找到一个时间戳服务器可以做到这一点:http://timestamp.globalsign.com/?signature=sha2

signtool/td标志也很重要(且记录不完整)。

签名是这样的:

signtool sign /fd SHA256 /tr http://timestamp.globalsign.com/?signature=sha2 /td SHA256 /a filename.exe

结果与代码标志证书和时间戳证书使用SHA-256的签名哈希算法的可执行文件。

+1

/td标志很重要。它也适用于Comodo的时间戳服务器。 –

+1

看起来Comodo终于修复了他们的服务器。 http://netez.com/bbs/viewtopic.php?t=11065#p69307 –

1

您可以使用您的SHA-2证书对代码进行双重签名,以便在XPsp3和Vista(不理解SHA-2)以及后来的操作系统(Win 7,8,10)下进行验证。

这是一个两步过程,首先用SHA-1签名,然后附加一个SHA-256签名。尽管它并不明确,但第一批signtool默认为SHA-1签名。在第二次运行中,您使用/ fd选项请求sha256摘要算法。本例中的时间服务器是Comodo的。

signtool sign /f cert.pfx /p your_cert_password /t "http://timestamp.comodoca.com" /v file_to_sign.exe 

signtool sign /f cert.pfx /p your_cert_pass /fd sha256 /tr "http://timestamp.comodoca.com/?td=sha256" /td sha 256 /as /v file_to_sign.exe 

您需要使用支持双重签名(/ as选项)的signtool版本。我相信这是Windows SDK版本8.1或更高版本。

完成此操作后,请检查可执行文件的安全属性,并且您应该在XP/VISTA下看到SHA-1和SHA-256签名(以后的操作系统),但只有SHA-1签名。

请注意,其他时间服务器有不同的选项来指定摘要算法。您的颁发CA应该能够提供适当的URL。

相关问题