【问题标题】:How to embed hash in exe file with signtool.exe如何使用 signtool.exe 在 exe 文件中嵌入哈希
【发布时间】:2014-12-26 01:43:22
【问题描述】:

我正在使用 signtool.exe 对 exe 文件进行签名。 我正在尝试将我的 exe 文件与 .pfx 证书以及 exe 的签名哈希(使用 openssl 生成的签名哈希)一起嵌入。我只能用证书签名。但我也需要将签名的哈希嵌入到 exe 中。 signtool.exe sign /as 可能会有所帮助。 /as 选项不需要任何参数,因此无法在那里传递我的哈希值。

有人可以帮我用证书和哈希签署我的 exe。

谢谢,

【问题讨论】:

    标签: hash certificate digital-signature signtool


    【解决方案1】:

    Windows 10 SDK 附带的 Signtool 版本包括将签名哈希嵌入到 exe 中的功能。

    从以下页面: https://vcsjones.com/2017/05/07/custom-authenticode-signing/

    从 Windows 10 SDK 开始,有两个新的命令行开关可用,dgdi。回想一下,签名总是在 Authenticode 上的哈希上执行。 dg 选项更改 signtool 的行为以输出一个摘要,您可以使用任何您喜欢的方式对其进行签名。让我们在 notepad.exe 的副本上尝试一下。

    signtool sign /dg "C:\scratch\dir" /fd SHA256 /f public-cert.cer notepad.exe
    

    这会将文件带到公共证书 - 没有密钥 公共证书.cer。您还可以使用/sha1 选项指定一个 证书存储中的证书也只有一个公钥。 这将在“C:\scratch\dir”目录中输出一些文件。这 摘要是带有“.dig”扩展名的摘要。该文件将具有 要签名的 Base64 编码摘要。接下来,使用您的自定义工具,签署 使用证书的私钥进行摘要。你应该解码 如果签名 API 需要原始数据,则在签名之前进行 Base64 签名 二进制摘要。

    接下来,将您的签名编码为 base64 并将其放入 与摘要文件同名的“C:\scratch\dir”目录,其中 “签名”扩展。例如,“notepad.exe.dig.signed”。

    下一步是将签名的摘要与其余部分一起提取 Authenticode 签名以完成签名。

    signtool sign /di "C:\scratch\dir" notepad.exe
    

    这将完成签名过程,我们现在有自己的签名 notepad.exe 的副本。像以前一样添加签名, 除了/as 标志。

    这为签名者使用非 CSP/CNG 提供了极大的灵活性 签名选项,或卸载签名过程。 Signtool 现在可以 还可以使用/ds 选项仅对普通摘要文件进行签名。如果你有一个 用于执行 Authenticode 签名的专用服务器,您现在可以使用 /dg/ds/di 选项,以便只需要一个非常小的文件 移动到签名服务器,而不是完全二进制,如果他们 体积很大。

    【讨论】:

    • 很遗憾,这不起作用:SignTool 错误:/dg /ds /di 选项与 /seal /itos /as 选项不兼容。
    • 仅在附加附加签名时才需要 /as 标志。如果只有一个签名,那么只需使用 /di 标志就可以了。如果您收到不存在签名的错误消息,则您的签名摘要可能是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2014-12-01
    • 2014-05-16
    相关资源
    最近更新 更多