我跟着这个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
对话框已打开以提供密码:
我写了密码:'fess'
新窗口打开:
我输入了:'fess'
#Succeeded
文件App-O.cer和App-O.pvk creaded。
现在我生成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获得了同样的错误。
谢谢,
答案 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