2014-10-30 82 views
1

我正在使用signtool.exe签署exe文件。 我想嵌入我的exe文件与.pfx证书以及exe的签名散列(使用openssl生成签名散列)。我只能用证书签名。但我需要将签名散列嵌入到exe中。可能signtool.exe符号/如可能有所帮助。 /作为选项不指望任何参数,所以不能通过我的散列在那里。如何在signtool.exe中将散列嵌入到exe文件中

有人可以帮我签署我的证书和散列的exe文件。

感谢,

回答

0

随Windows SDK 10的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需要原始 二进制摘要,则应在签名前解码 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选项对简单摘要文件进行签名。如果您有执行验证码签署一个 专用服务器,您现在可以使用 的/dg/ds/di选项,这样只有一个非常小的文件需要 移动到签名服务器,而不是完全二元如果他们 是体积很大。