【问题标题】:Why I get "The specified PFX password is not correct" when trying to sign application with signtool?为什么我在尝试使用 signtool 签署应用程序时收到“指定的 PFX 密码不正确”?
【发布时间】:2013-04-18 11:58:57
【问题描述】:

我关注了这个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。

现在我生成 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 得到同样的错误。

谢谢,

【问题讨论】:

    标签: pfx signtool


    【解决方案1】:

    有几个问题。

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

    接下来,在这一步

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

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

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

    所以正确的流程是:

    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"
    

    这里有一些有用的链接:

    【讨论】:

    • 嗯,“这样做你应该在 pfx 创建命令中添加 -po 键。”当我运行pvk2pfx.exe -pvk App-O.pvk -spc App-O.cer -pfx App-O.pfx 时打开密码对话框,我在其中提供密码。我认为它与添加:-po fess 相同。或者我错了
    • 是的,伙计,谢谢你是对的 :) 我会在 18 小时后加你 +100
    • 如果您不想暴露您的密码,请安装私钥并使用 signtool /a 选项从与您指定的 CN 等匹配的商店中选择“最佳”密钥。跨度>
    【解决方案2】:

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

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

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

    新的 YAML 管道使用 SHA256

    【讨论】:

    • 好像没有命令让pvk2pfx选择导出加密类型(SHA256 vs 3DES)
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 2015-10-24
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多