windows - 在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.
话虽如此,我使用以下命令使用/ac
switch添加中间证书
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 文件中,并将其与/ac
switch 一起使用。显然,Signtool 只从 pem 文件中获取第一个证书,而忽略其余部分。
另外,如果我想从我的中间证书添加来自 Microsoft 的交叉证书,我将如何添加它们?
据我所知,我可以将所有证书放入一个 pfx 文件中并与 signtool 一起使用。但是,正如我所提到的,我无权访问私钥。我不认为构建 pfx 文件对我来说是一种选择。
解决方案
推荐阅读
- javascript - Javascript 优化 - 从列表中查找 id 并将其映射到 Tree
- java - 创建名为“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter”的bean时出错
- javascript - 如何重置 angular2 表单中定义的下拉列表的值?
- javascript - 使用 Canvas JS 在页面中渲染多个图表
- flutter - 如果用户尚未登录,如何显示登录页面,如果用户已登录,如何显示帐户页面
- c - lseek() 的偏移量和大块设备
- r - 到达时间间隔中绝对时间的 R 向量
- python - 列表匹配中大小写不同的计数问题
- windows - rtsp 到 youtube 流在 Windows 中不起作用
- c# - 删除密码保护方法后使用 System.Data.SQLite 在 C# 中加密和打开加密的 SQLite 数据库