如何使用signtool.exe在exe文件中嵌入哈希

时间:2014-10-30 05:40:44

标签: hash certificate digital-signature signtool

我正在使用signtool.exe来签署exe文件。 我试图使用.pfx证书以及exe的签名哈希(使用openssl生成签名哈希)嵌入我的exe文件。我只能用证书签名。但我需要在exe中嵌入已签名的哈希值。可能 signtool.exe签名/ 可以提供帮助。 / as 选项不期望任何参数,因此无法在那里传递我的哈希值。

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

谢谢,

1 个答案:

答案 0 :(得分:0)

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
  

这会将文件带到公共证书 - 没有密钥   公共cert.cer。您还可以使用/sha1选项指定   证书库中的证书也只有一个公钥。   这将在“C:\ scratch \ dir”目录中输出一些文件。该   摘要是具有“.dig”扩展名的摘要。这个文件将有   Base64编码摘要签名。接下来,使用您的自定义工具,签名   使用证书的私钥进行摘要。你应该解码   如果签名API需要raw,则签名前签署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选项,只需要一个非常小的文件   移动到签名服务器,而不是完全二进制,如果他们   很大。