2

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

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

谢谢,

4

1 回答 1

3

随 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选项,以便只需要将一个非常小的文件移动到签名服务器,而不是完全二进制文件(如果它们很大的话)。

于 2017-12-12T20:40:52.737 回答