如何在Windows 7上设置带有SHA256的signtool?

5
我多年来一直使用SHA1签名,但从2016年开始,Windows强制开发人员使用SHA256。 Windows Enforcement of Authenticode Code Signing and Timestamping 使用Windows 7 SDK signtool对SHA-256进行签名的功能是“未知命令”,因此该signtool已经过时,不应再使用。
为了使用SHA256进行签名,我下载了Windows 8.1 SDK以获取signtool.exe,该工具获得了新的函数(/fd和其他几个函数)。BAT文件和signtool在Windows 8和10上运行正常,所以我知道它可以工作,但在尝试为文件打时间戳时,在Windows 7上崩溃了。

enter image description here

我使用批处理文件来签署文件,它看起来像这样(我编辑了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 7上安装了Visual Studio 2015,这样可以获取所有的包和工具。但是在我的Windows 7上,8.1_x86、8.1_x64、10_x86和10_x64都未能正常工作。如果有时间,我会尝试调试程序,因为这让我感到疯狂。 - Frank Jelstrup
1个回答

4

看起来我不擅长阅读。我自己回答问题,因为其他人可能会像我一样难以找到答案。

Windows 7不再支持signtool.exe,因此旧的/过时的函数如SHA-1签名仍在工作,但SHA-256时间戳是一个问题。我在MSDN上找到了这个:

来自MSDN的引用:注意:您只能在Windows 8及更高版本或Windows Server 2012及更高版本上使用SignTool来签署Windows Store应用程序包。您不能在下一级操作系统(如Windows 7或Windows Server 2008 R2)上使用SignTool来签署应用程序包。

如果您想阅读整篇文章,请点击这里:

{{link1:如何使用SignTool签署应用程序包}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接