让我们先说一下... 我:
使用Visual Studio 2012
开发VB.NET应用程序 - 主要是.NET framework 3.5,有些是2.0。
在Windows 7上进行开发(用户也在使用Windows 7。内部用户数量很少,不到40人)。
我还要声明,我是新手,不完全了解这个过程。我确实了解加密/哈希/密钥等基本概念,但我不能告诉您为什么您可能需要一个.cer
文件而不是一个.pfx
文件。
现在...
我们有一个应用程序,它使用证书签署其清单已经工作了三年左右。我们最近从Visual Studio 2008升级到Visual Studio 2012,基本上跳过了Visual Studio 2010。在那个过程中,证书现在无效或损坏了。
提议的解决方案:使用makecert.exe
创建一个新的证书,“就像上一次我们做的那样”。没有必要为证书付费,因为我们只需要它来给我们自己的一小部分用户带来方便,避免看到“你信任这个发布者吗?”的提示信息(我想是这样的)。在尝试发布时,出现了以下确切错误:
无法发布,因为项目构建失败。 签名时出错:无法签名bin\Release\app.publish\setup.exe。SignTool 错误:签名者的证书不适用于签名。SignTool 错误:尝试签名时发生错误:bin\Release\app.publish\setup.exe 现在,文章Support Certificates In Your Applications With The .NET Framework 2.0说:
对于桌面应用程序,通常将证书安装在用户存储中。
因此,当我通过证书管理控制台的MMC查看用户存储时,我看到:
红线所在位置是旧/无效证书。另外还有一个证书没有过期,上面有我的用户名(2013-06-20)。
当我去商店选择时,我看到这个:
如果您好奇的话,另一个直观的放置位置如下所示:
那么我该如何在旧的/坏的位置添加另一个?
这是我尝试过的:
按照这些说明,我执行了
makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer
现在我有一个
.pvk
文件和一个.cer
文件。然后我按照Pvk2Pfx (Windows Drivers)中的说明操作。pvk2pfx.exe -pvk TempCA.pvk -spc TempCA.cer -pfx TempCA.pfx
现在我有一个.pfx文件...(这是我需要的吗?),但是当我尝试使用MMC导入到证书存储时,无论我使用什么密码,它都会提示错误-即使我复制并粘贴它。(听起来像是导入程序中的一个错误...我可以重现这个问题。)
尝试另一种方法,在导入cer文件后,它不会出现在Visual Studio的“从存储中选择”窗口中,所以这是无用的。
我已经花了一天时间处理这个问题,准备放弃,但我不能。我需要做什么?
makecert -n“CN=<CLIENTCNHERE>”-ic“Authority.cer”-iv“<AUTHORITYPRIVATEKEY>.pvk”-a sha1-sky exchange-pe-sv“CLIENTPRIVATEKEY_GETS_CREATED.pvk”“MYCLIENTCERT.cer”
为客户端证书单独创建私钥。现在输入新密码并通过引用客户端新创建的.pvk密钥文件创建pfx文件。 - jAC