我正在使用signtool.exe来签署exe文件。 我试图使用.pfx证书以及exe的签名哈希(使用openssl生成签名哈希)嵌入我的exe文件。我只能用证书签名。但我需要在exe中嵌入已签名的哈希值。可能 signtool.exe签名/ 可以提供帮助。 / as 选项不期望任何参数,因此无法在那里传递我的哈希值。
有人可以帮我签署我的exe证书和哈希。
谢谢,
答案 0 :(得分:0)
Windows 10 SDK附带的Signtool版本包括将签名的哈希嵌入到exe中的功能。
从以下页面: https://vcsjones.com/2017/05/07/custom-authenticode-signing/
从Windows 10 SDK开始,有两个新的命令行开关,
dg
和di
。回想一下,签名总是在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
选项,只需要一个非常小的文件 移动到签名服务器,而不是完全二进制,如果他们 很大。