signtool与存储在本地计算机中的证书

16
我无法让signtool找到我的证书。通过直接指定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个回答

17

尝试使用这个命令:

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

你使用了/sm选项是正确的,但当你添加了/s Root时,你告诉signtool应该在计算机存储而不是根证书颁发机构中查找。你也可以跳过/s参数,因为/s My是默认值。
有关更多信息,请参阅signtool文档

我切换到“我的”并在本地机器/个人中安装了证书,现在它可以工作了!谢谢!现在我遇到另一个问题,时间戳服务器无法访问。当我在构建服务器上手动触发signtool时,它是可达的。但是当构建服务器触发它时却不行。 - sundown
可能是代理问题?用户已设置代理,但系统帐户没有。 - pepo
1
“/s”开关的文档描述不够清晰。除了“My”之外,它没有指定任何其他选项,而且说实话,这对于该选项来说远非直观的命名方式。其他选项是否有文档记录? - Shiv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接