使用makecert / pvk2pfx时,ClickOnce签名者证书无效

时间:2012-10-11 17:06:34

标签: .net clickonce

使用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中...

有什么想法吗?

3 个答案:

答案 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生成的一个将无法使用。

  1. 使用 MakeCert .cer开关设置为至少1024-或更适合于将来使用,将其生成-.pvk-len文件-2048-以及最重要的-r开关,它可以对证书进行自我签名。我显式添加了结束日期(使用-e 12/31/2039)和SH256加密算法(-a SHA256)。我建议添加密码。
  2. 使用 Pvk2Pfx 和标准/默认开关,从.pfx.cer文件中生成.pvk文件。
  3. 使用-p {YourPassword}匹配 MakeCert 提供的密码,使用 SignTool 对程序集进行签名。