【问题标题】:How to make and deploy a self-signed ClickOnce manifest with Visual Studio 2012如何使用 Visual Studio 2012 制作和部署自签名 ClickOnce 清单
【发布时间】:2012-11-29 00:12:09
【问题描述】:

让我们解决这个问题...我:

  • 使用 Visual Studio 2012

  • 开发 VB.NET 应用程序 - 主要是 .NET 框架 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)时,我看到了:

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

当我从商店中选择时,我看到了这个:

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

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

这是我尝试过的:

在these instructions之后,我执行了

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的“从商店中选择”窗口中,所以没用。

我为此花了一天时间准备放弃,但我不能。我需要做什么?

【问题讨论】:

    标签: visual-studio certificate clickonce self-signed


    【解决方案1】:

    文章 Using Makecert to Create Certificates for Development 帮助了大约 90% 的路...

    剩下的就是理解我可以做两件事之一(这两个选项都要求证书必须位于“受信任的根”区域,如“受信任的根证书颁发机构”,或者必须由那里的一个签名) :

    1. 在 Visual Studio 中,在“签名”选项卡下,我可以使用“从文件中选择”并使用 .cer 文件。
    2. 如果我只是将我的.cer 文件放在“个人”文件夹中,它将作为“从商店选择”按钮中的一个选项出现(我可能需要重新启动计算机或 Visual Studio)。

    【讨论】:

    • 您是如何解决密码错误问题的?我遇到了同样的问题,我知道我输入的密码正确!
    • @kyleb 我也遇到了完全相同的无效密码问题。你能指点一下吗?
    • @kyleb 我也遇到了密码无效的问题。有什么建议可以分享吗?
    • @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 文件。
    • github.com/3gstudent/signtools - 用于从 Windows SDK 下载所需工具
    【解决方案2】:

    Watki02 的回答很有帮助,但缺少一些细节。此外,该博客文章中的关键信息也应在此处发布。所以...

    1. 创建您自己的根授权证书:

      CD \path\to\你想要的地方

      makecert -n "CN=Make Up A Name" -a sha1 -r -sv MakeUpANameCertificateAuthority.pvk MakeUpANameCertificateAuthority.cer -ss MakeUpANameCertificateAuthority -sr localMachine

    2. 密码提示 系统将提示您创建密码,然后提交密码。我对两个提示都使用了相同的密码

    3. 用户证书

      makecert -pe -n "CN=CN=Make Up A Name User" -ss MY -a sha1 -iv MakeUpANameCertificateAuthority.pvk -ic MakeUpANameCertificateAuthority.cer -sv MakeUpAName.pvk MakeUpAName.cer

    4. 再次提示密码 我又用了和上面一样的密码

    制作一个可移植的文件以供交换

    pvk2pfx -pvk "MakeUpAName.pvk" -spc "MakeUpAName.cer" -pfx "MakeUpAName.pfx" -pi SamePasswordAgain
    
    1. 将文件发送给您的私人客户

      “MakeUpAName.pfx”

    2. 安装证书

    c:> MMC.EXE

    菜单文件 -> 添加/删除管理单元

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

    菜单操作->所有任务->导入

    通过向导

    选择 *.pfx 格式

    选择文件

    继续使用默认选项

    【讨论】:

    猜你喜欢
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多