如何签署MSI?

Sis*_*utl 7 code-signing certificate signtool

我的公司希望阻止客户安装我们产品时出现的UAC弹出窗口.我们从VeriSign购买了证书(VeriSign Class 3 Code Signing 2010 CA),我收到了一份MyCompany.cer文件.

我通过双击并选择"个人"商店来安装证书.它现在出现在证书管理单元中,以及其他几个证书.snapin说其预期目的是"代码签名".我通过复制指纹获得了SHA1哈希.

我尝试使用此命令对msi进行签名:

signtool sign /sha1 <thumbprint> myInstaller.msi
Run Code Online (Sandbox Code Playgroud)

并收到一条消息"SignTool错误:未找到符合所有给定条件的证书."

如果我放弃"/ sha1",我会得到商店中大多数其他证书的清单 - 那些表示其预期用途是"<全部>"的证书未列出.

我究竟做错了什么?

srb*_*bob 4

这已经很老了,但我希望它能对某人有所帮助。

首先,您需要检查您是否拥有该 .cer 文件的私钥,如果打开它,您应该在某处看到一个密钥图标,后面跟着以下句子:

您有此证书的私钥

请注意,您必须将证书安装在生成密钥对(和 CSR)的同一台计算机上。显然,如果您没有私钥,则无法签署任何内容。