【问题标题】:How to setup signtool with SHA256 on Windows 7?如何在 Windows 7 上使用 SHA256 设置 signtool?
【发布时间】:2016-02-05 11:33:40
【问题描述】:

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

Windows Enforcement of Authenticode Code Signing and Timestamping

通过使用 Windows 7 SDK 签名工具,对 SHA-256 进行签名的函数是“未知命令”,因此该签名工具作为签名工具已过时,不应再使用。

为了使用 SHA256 签名,我下载了 Windows 8.1 SDK 以获取具有新功能(/fd 和其他一些功能)的 signtool.exe。 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可在我的机器上重新分发 (x64),但未解决问题。

【问题讨论】:

  • 我已经在我的 Windows 7 上安装了 Visual Studio 2015,这样做是为了获取所有的包和工具。我的 Windows 7:8.1_x86、8.1_x64、10_x86 和 10_x64 上没有一个 signtools 可以工作。如果我有时间我会尝试调试程序,因为这让我发疯。

标签: windows sha256 signtool authenticode


【解决方案1】:

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

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

引用自 MSDN:注意您只能使用 SignTool 对您的 Windows 进行签名 在 Windows 8 及更高版本或 Windows Server 2012 和 之后。您不能使用 SignTool 在下级签署应用程序包 操作系统,例如 Windows 7 或 Windows Server 2008 R2。

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

How to sign an app package using SignTool

【讨论】:

    猜你喜欢
    • 2011-02-06
    • 2012-06-26
    • 1970-01-01
    • 2016-07-14
    • 2012-06-09
    • 2011-06-27
    相关资源
    最近更新 更多