Sectigo 时间戳服务器始终使用 SHA384 而不是 SHA1
Sectigo timestamp server always using SHA384 instead of SHA1
我正在尝试使用 Sectigo 代码签名证书对程序进行双重签名。它有效,但有一个问题。命令是:
signtool.exe sign /t http://timestamp.sectigo.com /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
signtool.exe sign /tr http://timestamp.sectigo.com?td=sha256 /td sha256 /fd sha256 /as /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
所以第一个调用使用 CertFile.pfx 并且应该是 SHA1 时间戳服务器,第二个调用使用应该是 SHA256。然而,结果都是 SHA384 时间戳(证书是 SHA1 + SHA384 时间戳,第二个是 SHA256 + SHA384 时间戳)。
现在,我尝试使用不同的时间戳服务器:
http://timestamp.digicert.com
signtool.exe sign /t http://timestamp.digicert.com /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /as /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
这给了我正确的结果 SHA1 + SHA1 时间戳和 SHA256 + SHA256 时间戳。
我的问题 - 我可以将 Digicert 时间戳服务器与 Sectigo 证书结合起来以获得正确签名的文件吗?有什么缺点吗?有没有办法强制 Sectigo 时间戳服务器使用正确的时间戳?如果在明确请求 SHA256 时使用 SHA384,这似乎是服务器行为不当。
我相信我自己找到了答案。在这里找到:
Alternative timestamping services for Authenticode
@RickWeb 的回答指定可以使用任何时间戳服务器来生成有效签名。
至于 Sectigo,我一直在联系他们的支持,他们没有提供太多帮助,我能发现的只是他们的时间戳服务器始终发送 SHA384,并且完全无视放置在 SignTool 中的参数。而且它们不支持 SHA1 会签,因此无法创建与旧版本 Windows(如 XP 和 Vista)兼容的正确双代码签名签名(如果您仍然需要支持那些 OS- es).
我看到的唯一缺点是在对您的可执行文件进行签名后取决于 2 个不同的 CA,这可能会出现一个问题,即如果一个根证书出于某种原因无效,则该可执行文件不会被检测为正确签名。我在 Windows XP 上看到过这种情况,因此不必手动更新 1 个根 CA (Sectigo/AAA),而是需要更新其中两个(也是 DigiCert),然后软件才能正确显示签名。
我正在尝试使用 Sectigo 代码签名证书对程序进行双重签名。它有效,但有一个问题。命令是:
signtool.exe sign /t http://timestamp.sectigo.com /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
signtool.exe sign /tr http://timestamp.sectigo.com?td=sha256 /td sha256 /fd sha256 /as /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
所以第一个调用使用 CertFile.pfx 并且应该是 SHA1 时间戳服务器,第二个调用使用应该是 SHA256。然而,结果都是 SHA384 时间戳(证书是 SHA1 + SHA384 时间戳,第二个是 SHA256 + SHA384 时间戳)。
现在,我尝试使用不同的时间戳服务器:
http://timestamp.digicert.com
signtool.exe sign /t http://timestamp.digicert.com /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
signtool.exe sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /as /f "CertFile.pfx" /p "password" /v "MyProgram.exe"
这给了我正确的结果 SHA1 + SHA1 时间戳和 SHA256 + SHA256 时间戳。
我的问题 - 我可以将 Digicert 时间戳服务器与 Sectigo 证书结合起来以获得正确签名的文件吗?有什么缺点吗?有没有办法强制 Sectigo 时间戳服务器使用正确的时间戳?如果在明确请求 SHA256 时使用 SHA384,这似乎是服务器行为不当。
我相信我自己找到了答案。在这里找到: Alternative timestamping services for Authenticode
@RickWeb 的回答指定可以使用任何时间戳服务器来生成有效签名。
至于 Sectigo,我一直在联系他们的支持,他们没有提供太多帮助,我能发现的只是他们的时间戳服务器始终发送 SHA384,并且完全无视放置在 SignTool 中的参数。而且它们不支持 SHA1 会签,因此无法创建与旧版本 Windows(如 XP 和 Vista)兼容的正确双代码签名签名(如果您仍然需要支持那些 OS- es).
我看到的唯一缺点是在对您的可执行文件进行签名后取决于 2 个不同的 CA,这可能会出现一个问题,即如果一个根证书出于某种原因无效,则该可执行文件不会被检测为正确签名。我在 Windows XP 上看到过这种情况,因此不必手动更新 1 个根 CA (Sectigo/AAA),而是需要更新其中两个(也是 DigiCert),然后软件才能正确显示签名。