为什么 signtool.exe 在双重签名 SHA2 和 SHA1 时不支持 /as 选项

Why signtool.exe don't support /as option while dual sign SHA2 and SHA1

我在双重签名 SHA2 和 SHA1 时遇到有关 /as 选项的错误

signtool sign /v /n "name" /sha1 "sha1 hash" /t http://timestamp.verisign.com/scripts/timstamp.dll my.exe
signtool sign /v /n "name" /sha1 "sha1 hash for sha256" /as /fd sha256 /tr http://timestamp.geotrust.com/tsa /td sha256 my.exe

SignTool Error: Invalid option: /as

我想我的 signtool.exe 版本是否不支持 /as 选项?我使用的 signtool.exe 版本是 6.1.7600.16385 BTY,我可以在没有 /as 选项的情况下成功签署 SHA2。

当我使用 signtool 的更高版本 6.2.9200.20527 时,我可以成功地对文件进行双重签名。 signtool 属于 windows sdk 8 https://dev.windows.com/en-us/downloads/windows-8-sdk。我想 windows 8 sdk 以上的更高版本也可以支持 /as 选项。

你需要Windows8/10,至少现在Windows7下是不可能的,真是奇怪。即使您将在 Windows 7(例如来自 SDK 10)下使用较新的 signtool 二进制文件,仍然无法使用 /as 开关。

我想问题的真正原因是:signtool.exe 与 mssign32.dll 和 wintrust.dll 相关联。这些 dll 位于 %WinDir%\system32 和 Windows 7 上,似乎不支持双重签名。 WinSDK 8.x 在与 signtool.exe 相同的文件夹中附带了这些 dll 的自己版本。这里双重签名有效!对于旧的 SDK 版本,它不会。我刚刚在我的 Windows 7 上安装了 WinSDK 10,但它在这里不再起作用,因为该 SDK 不再附带其自己的上述 dll 版本。我想这就是为什么其他人认为它只在 Windows 8.x 和更高版本下工作,因为这里 mssign32.dll 是更新的...