如何使用Visual Studio 2012创建和部署自签名的ClickOnce清单

9

让我们先说一下... 我:

  • 使用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查看用户存储时,我看到:

Enter image description here

红线所在位置是旧/无效证书。另外还有一个证书没有过期,上面有我的用户名(2013-06-20)。

当我去商店选择时,我看到这个:

Enter image description here

Enter image description here

如果您好奇的话,另一个直观的放置位置如下所示:

Enter image description here

那么我该如何在旧的/坏的位置添加另一个?

这是我尝试过的:

按照这些说明,我执行了

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的“从存储中选择”窗口中,所以这是无用的。
我已经花了一天时间处理这个问题,准备放弃,但我不能。我需要做什么?
2个回答

8
这篇文章《使用Makecert创建开发证书》帮助我解决了90%的问题…
剩下的问题是要理解:我可以采取以下两种做法来解决(这两个选项都需要将证书放在“受信任的根”区域,例如“受信任的根证书颁发机构”,或由该机构签署):
  1. 在Visual Studio中,在“签名”选项卡下,我只需使用“从文件中选择”并使用.cer文件。
  2. 如果我把我的.cer文件放在“个人”文件夹中,它将出现在“从存储中选择”按钮的选项中(我可能需要重新启动计算机或Visual Studio)。

4
您是如何解决“密码错误”的问题的?我遇到了与您相同的问题,但我知道我输入的密码是正确的! - kyleb
2
@kyleb 我也遇到了完全相同的无效密码问题。你能给我一些指点吗? - julealgon
2
@kyleb 我也遇到了无效密码的问题。你有什么建议可以分享吗? - CDR12
1
@kyleb @julealgon @CDR12 我知道这是一个老问题,但希望我的答案能有所帮助。问题在于您需要使用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
https://github.com/3gstudent/signtools - 用于从Windows SDK下载所需工具 - Phate01

2
Watki02的答案非常有帮助,但缺少一些细节。此外,该博客文章中的关键信息也应在此发布。所以...
1. 创建您自己的根证书:
CD \path\to\whereyouwant makecert -n "CN=编造名称" -a sha1 -r -sv 编造名称证书颁发机构.pvk 编造名称证书颁发机构.cer -ss 编造名称证书颁发机构 -sr localMachine 2. 密码提示 您将被提示创建密码,然后提交密码。我在两个提示中都使用了相同的密码。
3. 用户证书 makecert -pe -n "CN=CN=编造名称用户" -ss MY -a sha1 -iv 编造名称证书颁发机构.pvk -ic 编造名称证书颁发机构.cer -sv 编造名称.pvk 编造名称.cer 4. 再次提示密码 我再次使用了与上述相同的密码。
5. 制作可移动文件以进行交换。
pvk2pfx -pvk "MakeUpAName.pvk" -spc "MakeUpAName.cer" -pfx "MakeUpAName.pfx" -pi SamePasswordAgain
  1. 向您的私人客户发送文件

    "MakeUpAName.pfx"

  2. 安装证书

c:> MMC.EXE

MENU FILE -> 添加/删除控件

证书 -> 添加 -> 计算机帐户 -> 完成 -> 确定

MENU Action->所有任务->导入

按照向导操作

选择*.pfx格式

选择文件

继续使用默认选项


1
Makecert已经被弃用。要创建自签名证书,请使用PowerShell Cmdlet New-SelfSignedCertificate - joisman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接