我正在使用 signtool.exe 对 exe 文件进行签名。我正在尝试将我的 exe 文件与 .pfx 证书以及 exe 的签名哈希(使用 openssl 生成的签名哈希)一起嵌入。我只能用证书签名。但我也需要将签名的哈希嵌入到 exe 中。可能 signtool.exe 签名 /as可能会有所帮助。/as选项不期望任何参数,因此无法在那里传递我的哈希。
有人可以帮我用证书和哈希签署我的 exe。
谢谢,
我正在使用 signtool.exe 对 exe 文件进行签名。我正在尝试将我的 exe 文件与 .pfx 证书以及 exe 的签名哈希(使用 openssl 生成的签名哈希)一起嵌入。我只能用证书签名。但我也需要将签名的哈希嵌入到 exe 中。可能 signtool.exe 签名 /as可能会有所帮助。/as选项不期望任何参数,因此无法在那里传递我的哈希。
有人可以帮我用证书和哈希签署我的 exe。
谢谢,
随 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
这会将文件带到公共证书 - public-cert.cer 中没有密钥。您还可以使用该
/sha1
选项在证书存储中指定一个也只有一个公钥的证书。这将在“C:\scratch\dir”目录中输出一些文件。摘要是带有“.dig”扩展名的摘要。此文件将具有要签名的 Base64 编码摘要。接下来,使用您的自定义工具,使用证书的私钥对摘要进行签名。如果签名 API 需要原始二进制摘要,您应该在签名之前解码 Base64 签名。接下来,用 base64 对您的签名进行编码,并将其放在“C:\scratch\dir”目录中的一个文件中,该文件与摘要文件同名,扩展名为“signed”。例如,“notepad.exe.dig.signed”。
下一步是摄取已签名的摘要以及 Authenticode 签名的其余部分以完成签名。
signtool sign /di "C:\scratch\dir" notepad.exe
这将完成签名过程,我们现在拥有自己签名的 notepad.exe 副本。附加签名与以前一样完成,除了
/as
标志。这为签名者使用非 CSP/CNG 签名选项或卸载签名过程提供了极大的灵活性。Signtool 现在还可以使用该
/ds
选项仅对普通摘要文件进行签名。如果您有一个用于执行 Authenticode 签名的专用服务器,您现在可以使用/dg
,/ds
,/di
选项,以便只需要将一个非常小的文件移动到签名服务器,而不是完全二进制文件(如果它们很大的话)。