带有证书的签名工具存储在本地计算机中

Posted

技术标签:

【中文标题】带有证书的签名工具存储在本地计算机中【英文标题】:signtool with certificate stored in local computer 【发布时间】:2015-01-15 21:14:07 【问题描述】:

我无法让 signtool 找到我的证书。 pfx 文件用于签名,我已经通过直接指定 pfx 文件和密码来检查它。但是由于其他人可以访问代码存储库,我真的不想在那里存储证书+密码。

这就是为什么我在“受信任的根证书颁发机构”中的构建服务器(作为本地计算机,而不是每个用户)上安装了 pfx(来自 symantec)。这是因为 Jenkins 是使用本地系统帐户启动的。

这是我目前正在尝试的:

signtool sign /v /sm /s Root /n <thename> /t http://timestamp.digicert.com <thefile>

/sm / s Root - 这应该告诉signtool 切换到“本地机器”存储,对吧?并且 Root 应该指定“受信任的根证书颁发机构”?

/n - 这里我使用证书中的“颁发给”值,即公司名称。

我遇到了以下错误:

"SignTool Error: No certificates were found that met all the given criteria."

我今天浏览了这么多链接,试图找出我做错了什么。我已经在 mmc 中检查了本地计算机上的证书管理单元,并且证书正在“受信任的根证书颁发机构”中重新注册。

【问题讨论】:

【参考方案1】:

试试这个命令:

signtool sign /v /sm /s My /n <thename> /t http://timestamp.digicert.com <thefile>

您很好地使用了/sm 选项,但是当您添加/s Root 时,您说signtool 应该在Computer store 中查找,但在Root authority 中查找。您也可以跳过 /s 参数,因为 /s My 是默认值。

有关更多信息,请参阅signtool 的文档。

【讨论】:

我切换到“我的”并在本地机器/个人中安装了证书,现在它可以工作了!谢谢!现在我遇到了另一个问题,无法访问时间戳服务器。当我从构建服务器上的命令行手动触发 signtool 时,它是可以访问的。但不是在构建服务器触发它时。 可能是代理问题?用户设置了代理,但系统帐户没有。

以上是关于带有证书的签名工具存储在本地计算机中的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 中发送带有客户端证书的 HTTP 请求

自动代码签名 - 保护私钥

从 IIS 上的 LocalComputer 存储“Store_1”获取证书

Surface RT在Win10中安装UWP软件,证书签名已解决

如何以编程方式将带有证书链的 pfx 导入证书存储区?

ncat SSL 问题,证书验证失败(自签名证书)