11

突然之间,我使用 makecert/pvk2pfx 创建的未过期证书在尝试发布 ClickOnce 应用程序时抛出错误。这在上周工作得很好......

错误信息:

错误 2 签名时出错:无法签名 bin\Debug\app.publish\setup.exe。SignTool 错误:签名者的证书对签名无效。SignTool 错误:尝试签名时出错:bin\Debug\app.publish\setup.exe

当我在“签名”选项卡中使用“创建测试证书”选项时,证书可以正常工作并且应用程序已成功发布。

使用 makecert/pvk2pfx 手动创建我的证书时,我遵循MSDN 说明

当我删除旧的手动创建的证书时,使用 makecert/pvk2pfx 创建一个新证书并尝试使用该证书,我得到了同样的错误。

该应用程序是一个面向 .NET 4 的 WPF 应用程序,这一切都在 Visual Studio 2010 中......

有任何想法吗?

4

3 回答 3

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 发布了一个更新,该更新会影响所有具有小于 1024 位长度的 RSA 密钥的证书。

Microsoft 安全公告:更新最小证书密钥长度

于 2012-12-13T01:59:07.397 回答
8

在使用-r带有 Makecert 的开关(创建自签名证书)后,使用 pvk2pfx 生成的 pfx 证书现在适用于 ClickOnce 发布......我不确定这里到底发生了什么,因为不是“自签名”的旧密钥适用于很长时间...

我用来创建工作 pfx 证书的确切命令...

makecert -sv MyApp.pvk -n "CN=MyCompany" MyApp.cer -r

pvk2pfx -pvk MyApp.pvk -spc MyApp.cer -pfx MyApp.pfx
于 2012-10-11T17:39:42.537 回答
1

我有一个 Visual Studio 2013 项目,我可以使用(Visual Studio 生成的)pfx 文件对其进行签名,但是无论我做什么,使用SignTool都无法使用相同的证书。

然后我开始使用MakeCertPvk2Pfx制作新证书,但这也不起作用。我尝试将加密从 SHA1 更改为 SHA512,将密钥长度从 256 更改为 2048(如其他地方所建议的),更改SignTool的版本等,等等。

我必须检查 1,000 个包含“签名者的证书对签名无效”的不同链接。

我正在总结最有可能解决问题的主要内容。这一切都是基于生成一个新的 pfx 文件;Visual Studio 生成的将无法使用。

  1. 使用MakeCert生成您的文件.cer和文件,并将开关设置为至少 1024 - 或者,更好地进行未来验证,2048 - 以及自签名证书的最重要的开关。我明确添加了结束日期(使用)和 SH256 加密算法()。我建议添加密码。.pvk-len-r-e 12/31/2039-a SHA256
  2. 使用带有标准/默认开关的Pvk2Pfx.pfx.cer.pvk文件生成您的文件。
  3. 使用SignTool对程序集进行签名,使用-p {YourPassword}匹配MakeCert 提供的密码。
于 2018-07-08T06:06:33.993 回答