13

我们刚刚从 SHA-1 切换到 SHA-2 代码签名证书。(作为背景信息,我们使用 COMODO 代码签名证书在 Windows 上使用 signtool.exe 对 .exe 和 .xap 文件进行签名。)我们使用经过认证的时间戳来执行此操作,以确保 Windows 在代码签名证书之后继续信任代码签名过期。

现在我注意到时间戳证书仍然是 SHA-1 证书,当使用http://timestamp.comodoca.com/authenticode时。(详细信息:它是 df946a5... 主题为 'CN=COMODO Time Stamping Signer,O=COMODO CA Limited,L=Salford, S=Greater Manchester,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 ...)

4

2 回答 2

4

自 2017年 1 月 1 日起,您不能再在 Windows 7 及更高版本上使用 SHA-1(如果时间戳记在 2016 年 1 月 1 日之后)。

本文介绍如何使用时间戳 URL http://timestamp.globalsign.com/?signature=sha2获取 SHA-256 时间戳证书。作为替代方案,请参阅您也可以使用的时间戳服务器列表。

signtool /td标志也很重要(并且记录不充分)。

像这样签名:

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

生成带有代码签名证书和带有 SHA-256 签名哈希算法的时间戳证书的可执行文件。

于 2015-10-19T03:17:01.067 回答
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

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

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

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

于 2016-10-11T08:28:30.260 回答