使用makecert / pvk2pfx创建的未过期证书突然在尝试发布ClickOnce应用程序时抛出错误。这个上周工作正常......
错误讯息:
错误2签名时出错:签名失败 斌\调试\ app.publish \ setup.exe文件。 SignTool错误:签名者的 证书无效签署。 SignTool错误:错误 尝试签名时发生:bin \ Debug \ app.publish \ setup.exe
当我在“签名”选项卡中使用“创建测试证书”选项时,证书工作正常并且应用程序已成功发布。
使用makecert / pvk2pfx手动创建证书时,我正在关注MSDN instructions。
当我删除旧的手动创建的证书时,使用makecert / pvk2pfx创建一个新证书并尝试使用那个我得到相同的错误。
该应用程序是一个面向.NET 4的WPF应用程序,这一切都在Visual Studio 2010中...
有什么想法吗?
答案 0 :(得分:23)
在我指定证书长度大于1024之后,它对我有用:
makecert -sv MyApp.pvk -n "CN=MyCompany" -len 2048 MyApp.cer -r
pvk2pfx -pvk MyApp.pvk -spc MyApp.cer -pfx MyApp.pfx -po MyPassword
Microsoft发布了一个更新,该更新会影响RSA密钥长度小于1024位的所有证书。
Microsoft Security Advisory: Update for minimum certificate key length
答案 1 :(得分:6)
使用Makecert的-r
开关(创建自签名证书)后,使用pvk2pfx生成的pfx证书现在适用于ClickOnce发布...我不确定自从旧密钥发生以来发生了什么不是“自签名”很长时间没有工作......
我用来创建工作pfx证书的确切命令......
makecert -sv MyApp.pvk -n "CN=MyCompany" MyApp.cer -r
pvk2pfx -pvk MyApp.pvk -spc MyApp.cer -pfx MyApp.pfx
答案 2 :(得分:0)
我有一个Visual Studio 2013项目,可以使用(Visual Studio生成的)pfx文件签名,但是无论我做什么,使用 SignTool 都无法使用相同的证书。< / p>
然后,我开始使用 MakeCert 和 Pvk2Pfx 制作新的证书,但这也不起作用。我尝试将加密从SHA1更改为SHA512,将密钥长度从256更改为2048(如在其他地方建议的那样),更改了 SignTool 的版本,等等,等等。
我必须检查了1,000个不同的链接,其中包含“签名者的证书对签名无效”。
我正在总结最有可能解决该问题的主要问题。所有这些都基于生成新的pfx文件。 Visual Studio生成的一个将无法使用。
.cer
开关设置为至少1024-或更适合于将来使用,将其生成-.pvk
和-len
文件-2048-以及最重要的-r
开关,它可以对证书进行自我签名。我显式添加了结束日期(使用-e 12/31/2039
)和SH256加密算法(-a SHA256
)。我建议添加密码。.pfx
和.cer
文件中生成.pvk
文件。-p {YourPassword}
匹配 MakeCert 提供的密码,使用 SignTool 对程序集进行签名。