11

我按照这个链接 签署了我的 exe 应用程序。

  • 我在 Windows 7 上安装了 SDK 工具,

  • C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin>makecert.exe -sv App-O.pvk -n "CN=MY DIGITAL KEY" App-O.cer

打开对话框以提供密码:

在此处输入图像描述

我写了密码:'fess'

新窗口打开:

在此处输入图像描述

我输入了:'fess'

#Succeeded

创建了 App-O.cer 和 App-O.pvk 文件。

现在我生成 pfx:

pvk2pfx.exe -pvk App-O.pvk -spc App-O.cer -pfx App-O.pfx

打开对话框以提供密码:

在此处输入图像描述

我贴了'fess'

文件 pfx 创建。

现在我运行signtool:

 C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin>signtool.exe sign /f "App-O.pfx" /p fess "C:\Output\setup.exe"

在这里我得到了错误:

SignTool Error: The specified PFX password is not correct.

Number of files successfully Signed: 0
Number of warnings: 0
Number of errors: 1

我错过了什么?

顺便说一句,我从 Windows SDK 的 CMD shell 得到同样的错误。

谢谢,

4

3 回答 3

26

有几个问题。

首先,您使用的是自签名证书,因此您应该通过在 makecert 命令中添加 -r 密钥来明确定义它,否则您将在签名步骤中收到错误“签名者的证书对签名无效”。

接下来,在这一步

signtool.exe sign /f "App-O.pfx" /p fess "C:\Output\setup.exe"

您正在尝试使用密码“fess”打开 pfx。但是您实际上没有为 pfx 文件设置任何密码。为此,您应该将 -po 键添加到 pfx 创建命令。

之后,您可以签署您的申请。

所以正确的过程是:

makecert.exe -sv App-O.pvk -n "CN=MY DIGITAL KEY" App-O.cer -r

pvk2pfx.exe -pvk App-O.pvk -spc App-O.cer -pfx App-O.pfx -po fess

signtool.exe sign /f "App-O.pfx" /p fess "C:\Output\setup.exe"

以下是一些有用的链接:

于 2013-04-20T14:30:35.933 回答
9

刚刚在某些机器上收到与 DigiCert 代码签名证书类似的错误时,偶然发现了这个问题。

结果我在导出证书时选择了 SHA256 加密而不是 TripleDES-SHA1,并且我们的一台构建机器仍在运行 Windows Server 2012 R2。该操作系统显然无法解密证书,从而导致相同的(在这种情况下令人恼火)错误消息。

Hosted VS2017更新:同样的行为也发生在使用管道和 DigiCert 证书的Azure Devops 经典管道上。

新的 YAML 管道使用 SHA256

于 2019-12-17T08:19:22.057 回答
0

您只需要-pi像这样添加参数(pvk 文件的密码):

pvk2pfx.exe -pvk App-O.pvk -pi fess -spc App-O.cer -pfx App-O.pfx -po fess -f
于 2020-09-28T10:01:40.447 回答