6

我正在使用受信任的 CA 颁发的证书签署一个 EXE 程序。我正在使用 Windows SDK v6.0a 中的 signtool.exe。

证书位于计算机存储中,并且位于“个人”文件夹中。

我的命令行是:

sign /sm /n "My company" /d MyProductName /du http://my.url.com "C:\Setup\setup.exe"

当我在命令行上运行此命令时,它工作正常。当我在批处理过程中运行此命令时(由 web 服务调用,因此执行命令时没有用户登录),出现以下错误:

错误数:1 SignTool 错误:ISignedCode::Sign 返回错误:0x80092006 未为商店或对象指定提供程序。

有人可以帮忙吗?

4

5 回答 5

2

为了节省时间,我遇到了这个问题。原来我的证书不知何故被损坏了。在我将它从证书存储中删除并再次导入后,问题就消失了。我建议全部创建 PFX 文件或从您知道它没有损坏的位置复制它。

于 2012-04-24T17:18:34.033 回答
2

问题是您的服务进程无法访问您的私钥,该私钥存储在您的帐户下。

登录到运行 Web 服务的帐户并将私钥导入密钥容器。例如,您可以使用.NET的强名称工具 (sn.exe)执行此操作:

sn -i MyCertificate.pfx MyCodeSigningKey

现在,更改您的构建脚本以使用此密钥容器:

signtool sign /sm /a /v /csp "Microsoft Strong Cryptographic Provider" /kc MyCodeSigningKey <other parameters...>

/kc指定密钥容器。/kc要求您通过/csp开关指定“CSP”(加密服务提供商)。“Microsoft Strong Cryptographic Provider”是sn.

于 2010-01-27T19:37:24.667 回答
1

我 [just now, just once] 经历了同样的情况(在使用相同参数成功调用之后立即,除了在不同的 MSI 文件上)。下次执行构建脚本时重新运行成功。也像你一样使用

/sm /d /du
不使用
/n
另外使用
/吨

于 2009-07-23T08:02:23.343 回答
0

我也遇到过这个问题。仍然不太确定是什么原因造成的,因为我从来没有时间找出来。我发现的是私钥丢失了!?

我按照 coder_2007 的建议做了,它适用于一个完整的自动化构建,但下一个会给出同样的错误。因此,我的构建服务器上的某些东西在完成构建(包括几个签名的应用程序)后破坏了私钥。

我最终最终做的是,在导入 PFX 后立即去%allusersprofile%\Microsoft\Crypto\RSA\MachineKeys写保护最新的文件(与导入时间匹配的文件)。

于 2013-02-22T09:53:52.430 回答
0

如果在安装证书后更改了 Windows 密码,则可能会发生这种情况。将密码更改回原来的密码将修复它。如果您不能这样做,则需要重新安装证书。

于 2016-11-17T22:09:49.763 回答