如何在作为服务运行的hudson中正确使用signtool.exe?

Tim*_*Tim 17 hudson code-signing authenticode

我刚刚从THAWTE购买了代码签名证书(MS authenticode),并且显然已经在我的构建机器上安装了它.我以用户身份登录,当我打开cmd提示符时,我可以使用带有signtool.exe的证书对EXE进行签名.

不幸的是,这个相同的命令行在机器上运行的hudson进程中不起作用.

我得到的错误信息是:

SignTool错误:未找到符合所有给定条件的证书.

我认为这是因为hudson服务运行的帐户不同于我从用于从thawte获取证书的帐户运行signtool.exe的帐户.

所以,我的问题是:我该如何解决这个问题?我以为我要从thawte下载一个文件,但它只是以某种方式使用IE来神奇地在用户的缓存中安装证书.我可能想要导出(或任何正确的术语)到我可以存储/保存或在任何其他机器上使用的文件.

我该怎么做?如何使用系统/服务帐户中其他用户的文件或证书正确调用signtool?

Wil*_*ord 15

取自signtool sign -h输出:

/s <name>   Specify the Store to open when searching for the cert. The default
is the "MY" Store.
/sm         Open a Machine store instead of a User store.
Run Code Online (Sandbox Code Playgroud)

让它工作有点痛苦......我能够通过将证书添加到本地机器商店并使用/ sm开关来实现它.

/ s开关允许您选择要使用的预定义存储.遗憾的是,我找不到任何文档列出了实际可用的选项(@Microsoft signtool维护者:请记录下来!).另一个复杂因素是很难确定Hudson提供哪个商店访问权限 - 它不是您所期望的本地安全哈德森帐户.

注意:从signtool访问时,mmc视图中列出的"Personal"商店是"MY"商店.

值得庆幸的是,/ sm开关为我们提供了一个免费的监狱卡.不幸的是,如果构建服务器为多个组织或部门运行作业,则存在安全风险.在我的情况下它只由我的小组使用,所以这不会打扰我.


Tim*_*Tim 0

我认为这是一个很容易解决的问题。相反,它正在变成一场希腊悲剧。

提供商 Thawte 显然认为要求所有证书操作发生在发起请求的同一台计算机和浏览器上是有用的。不幸的是,就我而言,我是在 Windows7 机器上完成的。由于 MS 的一些废话,这意味着当我获得证书时,我无法使用私钥导出它。这只能在 Win2000 和 XP 上实现。因此,我需要使用一个已有 7 年历史的操作系统来为我的业务做一些基本的事情。这是令人兴奋的。

事实证明,现在我正在等待证书的第三个请求得到满足。