首页 > 解决方案 > 在signtool中为签名添加中间证书

问题描述

我正在尝试使用 Microsoft 的 signtool.exe 对可执行文件进行签名
。私钥位于 HSM 中,无法取出。因此,我必须在 .cer 文件中获取证书的“公共”部分,并使用以下命令进行签名

signtool.exe sign /v /f .\SigningCert.pem /csp "HSM Key Storage Provider" /k "KEYID" /tr http://timestamp.digicert.com /fd sha256 /td sha256 .\App.exe

由于我用于签名的机器没有将中间证书添加到 Windows 信任库,因此无法验证签名的可执行文件。

SignTool Error: WinVerifyTrust returned error: 0x800B010A
        A certificate chain could not be built to a trusted root authority.

话虽如此,我使用以下命令使用/acswitch添加中间证书

signtool.exe sign /v /f .\SigningCert.pem /csp "HSM Key Storage Provider" /k "KEYID" /ac .\Intermediate.pem /tr http://timestamp.digicert.com /fd sha256 /td sha256 .\App.exe

可执行文件可以正确验证。到目前为止,一切都很好。

现在,如果我的证书链有多个中间证书,我如何将它们添加到签名中?

示例链:

Leaf Cert -> Intermediate 1 -> Intermediate 2 -> Root Cert

我尝试将所有中间证书合并到一个 pem 文件中,并将其与/acswitch 一起使用。显然,Signtool 只从 pem 文件中获取第一个证书,而忽略其余部分。

另外,如果我想从我的中间证书添加来自 Microsoft 的交叉证书,我将如何添加它们?

据我所知,我可以将所有证书放入一个 pfx 文件中并与 signtool 一起使用。但是,正如我所提到的,我无权访问私钥。我不认为构建 pfx 文件对我来说是一种选择。

标签: windowsazurecertificatecode-signingsigntool

解决方案


推荐阅读