1

几个月前,a 能够使用我在服务器上创建的测试证书成功签署 CAB 文件。以下是我采取的步骤:

makecert.exe -sv "Demo.pvk" -n "CN=Demo Company,E=demo@gmail.com" "Demo.cer"

cert2spc.exe "Demo.cer" "Demo.spc"

pvk2pfx.exe -pvk "Demo.pvk" -pi "pvk_password" -spc "Demo.spc" -pfx "Demo.pfx" -po "pfx_password"

signtool.exe 签名 /f "Demo.pfx" /p "pfx_password" /v "D:\Setup.cab"

除了最后一个使用signtool返回的步骤之外,所有步骤都成功:“签名者的证书对签名无效”。我已经在网上对这个错误进行了研究,但实际上并没有解决我的问题。由于 pfx 已过期,通常会创建此错误,但此处并非如此。我已成功将证书导入本地证书存储并检查了它的有效性。

为什么即使我重新创建它,我也无法再用我的 pfx 签署 CAB?是否有一些 Windows 更新负责此更改?

我愿意接受有关使用命令提示符使用 pfx 签署 CAB 的任何其他方式的建议。

4

2 回答 2

4

我设法破解了这个难题并用测试证书签署了 CAB。

首先,我通过添加代表自签名的 -r 参数更改了 makecert 调用:

makecert.exe -sv "Demo.pvk" -n "CN=Gregor Primar SP,E=gprimar@gmail.com" "Demo.cer" -r

下一步是使用 makecert 而不是 pvk2pfx 创建 pfx:

makecert -sk GpSolutionsKey -iv "Demo.pvk" -n "CN=Gregor Primar SP" -ic "Demo.cer" -sr currentuser -ss my -sky signature -pe

这也将 pfx 导入到用户证书存储 (-sr currentuser)。

然后我打开 mmc 并添加 Certificates snap-inn(我的用户帐户)。选择个人证书并导出到光盘。

最后一步是使用以下命令进行签名:

signtool.exe sign /f "Demo.pfx" /p "pfx_password" /v "d:\Setup.cab"

并且 Setup.cab 与 Demo.pfx 成功签署!

于 2012-12-10T11:07:02.257 回答
0

几乎可能您的密钥公共大小小于 2048 位(默认情况下使用长度 = 1024 无法签名),2048 位是操作系统能够签名过程所需的最小大小,您可以在运行时检查此值certmgr命令行,转到包含您最近创建的证书的文件夹,双击您的证书,转到详细信息选项卡并验证密钥公共大小是否大于或等于 2048

如果大小小于 2048,您应该再次生成将标志 -len=2048 (或更大)添加到 makevert 命令,我还包括 -r 标志

makecert -sv "mycertif.pvk" -n "CN=Totem Company" -len 2048 mycertif.cer -r

迟到了,用signtool申请签

为我工作,祝你好运

于 2014-04-15T15:51:22.643 回答