尝试使用signtool签名应用程序时,为什么会出现“指定的PFX密码不正确”?

时间:2013-04-18 11:58:57

标签: pfx signtool

我跟着这个link  签署我的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

对话框已打开以提供密码:

enter image description here

我写了密码:'fess'

新窗口打开:

enter image description here

我输入了:'fess'

#Succeeded

文件App-O.cer和App-O.pvk creaded。

现在我生成pfx:

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

对话框已打开以提供密码:

enter image description here

我粘贴'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获得了同样的错误。

谢谢,

3 个答案:

答案 0 :(得分:21)

有几个问题。

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

接下来,在此步骤

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

您正在尝试使用密码“fess”打开pfx。但实际上你没有为pfx文件设置任何密码。为此,您应该将-po key添加到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"

以下是一些有用的链接:

答案 1 :(得分:1)

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

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

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

新的YAML管道可与SHA256一起使用

答案 2 :(得分:0)

您只需要添加-pi参数(pvk文件的密码),如下所示:

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