我多年来一直使用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上崩溃了。 我使用批处理文件来签署文件,它看起来像这样(我编辑了BAT文件,以便不显示变量、完整路径、公司名称和密码):
为了使用SHA256进行签名,我下载了Windows 8.1 SDK以获取signtool.exe,该工具获得了新的函数(/fd和其他几个函数)。BAT文件和signtool在Windows 8和10上运行正常,所以我知道它可以工作,但在尝试为文件打时间戳时,在Windows 7上崩溃了。 我使用批处理文件来签署文件,它看起来像这样(我编辑了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),但问题仍未解决。