Signtool错误指定的PFX密码不正确

问题描述 投票:0回答:5

我有一个来自 DigiCert .pfx 文件的新证书,当我尝试使用它进行签名时,会出现错误“指定的 PFX 密码不正确”,但是在本地安装时密码工作正常。我尝试过不指定密码但没有成功。该证书是给我购买另一个购买它的人的。

谢谢

certificate sign pfx signtool
5个回答
2
投票

我遇到了同样的问题,但通过从密码中删除“解决了它。

之前:signtool.exe签名/f mycert.pfx /p“密码”/v /t http://...“application.exe”

之后:signtool.exe 签名 /f mycert.pfx /p 密码 /v /t http://... application.exe


1
投票

在 Visual Studio 中尝试使用构建后事件对 dll 文件进行签名时,我也遇到了同样的问题。我发现问题是密码中包含特殊字符,例如百分号 (%) 和逗号 (,)。我在设置没有这些特殊字符的新密码后修复了它。

我希望这有帮助


0
投票

另一个可能的问题是 PFX 的加密可能无法识别,例如,较新的 SHA256 加密证书无法用于登录较旧的 SDK

查看相关SO答案: signtool - 新机器上指定的 PFX 密码不正确

为什么我在尝试使用 Signtool 签署应用程序时收到“指定的 PFX 密码不正确”?


0
投票

我在 Azure Devops 中使用命令行任务时遇到了同样的问题:

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\signtool.exe" sign /f "D:\Cert\CodeSigning.pfx" /p %_pwd123_% /d "" /du "" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 "D:\Build\Installer.msi"

这导致“指定的 PFX 密码不正确”。 但我能够从失败的管道中获取实际的脚本命令,将其复制到构建计算机上的 cmd 提示符中并成功运行它(无需任何更改)。

我还尝试创建一个管道变量,就像我看到其他人所做的那样,并在像

$(pfxPwd)
这样的命令中使用它。运行时似乎也可以完美转换,但仍然失败。

解决方案是使用管道变量,但将其包含在命令中,如下所示:

%pfxPwd%

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\signtool.exe" sign /f "D:\Cert\CodeSigning.pfx" /p %pfxPwd% /d "" /du "" /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 "D:\Build\Installer.msi"

也许这个问题是由密码以

%
开头和结尾引起的。 但由于这个证书和密码来自IT,所以没有其他选择。

注意:我后来发现,如果我将变量类型更改为“秘密”,它就不再起作用。


0
投票

我尝试使用 PowerShell 任务从 Azure DevOps 管道进行签名。

之前:(出现问题中提到的相同错误)(双引号中的密码)

CustomToolForSigning.exe --action SigningWithPfx --pfx-file $pfxPath --working-directory $(build.artifactstagingdirectory) --pfx-password "$(PrivateKey)"

之后:(有效)(单引号中的密码)

CustomToolForSigning.exe --action SigningWithPfx --pfx-file $pfxPath --working-directory $(build.artifactstagingdirectory) --pfx-password '$(PrivateKey)'

出现错误是因为我的密码包含“$”符号,例如$a$b$c$d。由于 PowerShell 尝试解析变量,因此它无法使用双引号。当我将其更改为单引号时,它充当字符串,并且一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.