如何在 Windows 7 上使用 SHA256 设置签名工具?

How to setup signtool with SHA256 on Windows 7?

多年来我一直在使用 SHA1 签名,但是从 2016 年开始,Windows 强制开发人员使用 SHA256。

Windows Enforcement of Authenticode Code Signing and Timestamping

通过使用Windows 7 SDK signtool,对SHA-256进行签名的函数是“未知命令”,所以这个signtool作为一个signtool已经过时了,不应该再使用了。

为了使用 SHA256 进行签名,我下载了 Windows 8.1 SDK 以获得 signtool.exe,其中包含新功能(/fd 和其他一些功能)。 BAT 文件和 signtool 在 Windows 8 和 10 上工作,所以我知道它工作,但在 Windows 7 上崩溃时它试图为文件添加时间戳。

我使用 bat 文件对文件进行签名,如下所示(我编辑了 BAT 文件,因此它不显示变量、完整路径、公司名称和密码):

Path\signtool.exe sign /f "Path\Certificate.p12" /fd sha256 /p *password* /du "URL" /tr "timestampServer?td=sha256" /td sha256 /d "Product name" "Filename"

我想,我没有合适的 SDK 来支持某些功能,但我在互联网上找不到任何关于如何在 Windows 上设置它的信息 7. 我试过了在我的机器上安装 MS Visual C++ 2015 Redistributable (x64) 而没有解决问题。

看来我不擅长阅读。我正在回答我自己的问题,因为其他人可能会发现它很难找到,就像我一样。

Windows 不再支持 Windows 7 上的 signtool.exe,所以这就是为什么像 SHA-1 签名这样的 old/obsolete 功能仍然有效,但是SHA-256 时间戳是个问题。我在 MSDN 上找到了这个:

Quote from MSDN: Note You can only use SignTool to sign your Windows Store app packages on Windows 8 and later or Windows Server 2012 and later. You can't use SignTool to sign app packages on down level operating systems such as Windows 7 or Windows Server 2008 R2.

如果你想阅读全文,请看这里:

How to sign an app package using SignTool