1

我正在尝试使用 Thawte 颁发的代码签名证书对 ActiveX 控件进行签名。我能够使用signtool.exe 成功地对控件进行签名。

当我查看文件属性时,它显示“无法验证签名中的证书”。

当我查看证书时,它显示“Windows 没有足够的信息来验证证书”。

在证书路径选项卡上,它显示“找不到此证书的颁发者”。

在 Internet Explorer 中,证书被识别为已签名,但用户收到发布者未经验证的警告。

我尝试创建一个包含我的证书以及链接到我的 Thawte 开发人员证书的根证书和中间证书的单个 PFX 文件,然后使用该 PFX 文件重新签署控件。没有骰子。

有什么建议么?

4

1 回答 1

2

该问题实际上包含正确的程序——使用包含根证书、中间证书、开发人员证书和私钥的 PFX 文件进行签名。另外,使用时间戳服务器。我的问题是我的 PFX 中包含错误的根证书,因此用于签名的证书无法链接回根。

根据要求,这里是有关如何创建 PFX 文件的信息。我在下面使用的 cert2spc 和 pvk2pfx 也在平台 SDK 中。

cert2spc certpath1.cer certpath2.cer certpath3.cer codesign.spc

其中 .cer 文件列表包括根证书、中间证书和代码签名证书,而 codesign.spc 是输出文件。然后:

pvk2pfx -pvk privkey.pvk -spc codesign.spc

以这种方式运行 pvk2pfx 会启动一个向导,提示输入私钥密码、输出文件的位置和输出文件的密码。

最后,signtool 进行实际的代码签名:

signtool sign /f my_certificates.pfx /p my_passphrase /t http://timestamp.verisign.com/scripts/timstamp.dll my_activex_control.ocx

回想起来,我可能通过使用直接使用 .spc 和 .pvk 文件的 signcode.exe 又名代码签名向导(我认为它是 .NET SDK 的一部分)节省了时间。

于 2010-05-14T18:56:22.627 回答