27

我在 stackoverflow 上彻底研究了这个问题,我看到了很多答案,但没有一个对我们有用。我们最近从 comodo 购买了一个代码签名证书,我们将用它来签署我们的 c# WPF .net4 应用程序。
我们已按照以下 URL上的说明进行操作

然后在“项目属性->唱歌->签署程序集”下将证书导入Visual Studio。然后我们尝试构建项目并得到以下错误:

无法导入以下密钥文件:comodo.pfx。密钥文件可能受密码保护。要更正此问题,请尝试再次导入证书,手动将证书安装到具有以下密钥容器名称的强名称 CSP:VS_KEY_xxxxxxxxxxxxxxx。

我们在互联网上找到了许多解决方案,并尝试了以下方法:

  • 单击更改密码并在所有 3 个位置使用相同的密码
  • sn -i [comodo].pfx VS_KEY_xxxxxxxxxxxxx
  • 尝试将其转换为无密码 snk 文件并使用它而不是 .pfx
  • 尝试以管理员身份运行 Visual Studio 并导入密钥
  • 尝试创建非常简单的准系统项目并与之签名
  • 尝试了 Visual Studio 2010 和 2012
  • 我们尝试将以下内容添加到程序集中 [程序集:AssemblyKeyFile("path to key file")]
  • 在 postbuild "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" 中添加了事件 sign /f "$(ProjectDir)[keyfile].pfx" /p [thepassword] /v "$(ProjectDir)obj\Release\$(TargetFileName)"
  • 在 .csproj 文件的一个部分中添加:

  • 下载http://visualstudiogallery.msdn.microsoft.com/a83505c6-77b3-44a6-b53b-73d77cba84c8并点击错误的“应用修复”

到目前为止,我们还没有成功。我们可以使用密码很好地导入密钥,这样我们就知道密码是正确的。我们也知道这对于在 clickonce 发布中签署清单非常有效。只是为了确保我们没有任何其他问题,我们关闭了 cilckonce 签名,只是试图签署程序集。

4

8 回答 8

18

您可以简单地打开“ Project> Property>Signing ”并取消选中“签署 ClickOnce 清单”复选框。

于 2014-11-26T15:23:28.273 回答
13

我了解到 Visual Studio 似乎不能很好地处理从属证书。
我在多台机器(不同的 OS/VS 组合)上尝试了几个证书,结果相同。
我终于发现这是一种解决方法:

  • 签署程序集

    signtool sign /f "[path to pfx]" /p [password] /v "[path to assembly]"

  • 使用 mageUI 构建您的安装程序(请参阅“手动部署 ClickOnce 应用程序”)

Visual Studio 的问题似乎是它不喜欢证书链接。这可以通过在没有链接的情况下导入/导出证书来解决。下一个问题通过使用 certutil 和 export 与 AT_SIGNATURE来解决。我能够将它导入 VS 并构建,但它似乎没有签署程序集。

于 2013-03-08T15:33:26.770 回答
12

我得到了类似的错误。通过从 Windows 资源管理器的上下文菜单中选择安装 PFX解决了这个问题。

于 2014-06-19T16:00:56.613 回答
4

另一个“为我工作”...

在 Windows 资源管理器中右键单击 PFX,选择“安装 PFX”并在向导中提供密码。然后在VS的项目属性中,在“签名”下选择“更改密码”并重新输入密码。在此之前,只有以管理员身份运行 VS 才能工作。

于 2017-02-24T09:57:14.767 回答
3

我能想到的最佳解决方案是转到项目->属性->选择一个强名称密钥文件下拉列表并选择“新建”->创建密钥,然后转到顶部的证书部分->单击从文件中选择并选择您创建的新密钥 --> 构建解决方案 --> 发布。

于 2015-06-12T17:53:05.103 回答
1

For me following worked, First Install certificate by double clicking on it. then,

Project Properties -> Signing -> If 'Sign the ClickOnce manifests' is checked -> click on 'Select from file' and select .pfx file and it should show all the certificate valid details like Issued to, Issued By, Intended Purpose etc.

于 2017-05-31T15:25:20.013 回答
1

我遇到过同样的问题。我正在许多计算机上从拇指驱动器构建应用程序,并相信这就是原因。

我发现使用“sn -i [comodo].pfx VS_KEY_xxxxxxxxxxxxx”方法取得了成功。我做了以下步骤:

  1. 以管理员身份运行“开发人员命令提示符”(在开始->所有程序->Visual Studio->工具中找到)
  2. 导航到您的密钥目录(对我来说,这是我的项目目录的根目录,而不是解决方案目录)
  3. 执行“sn -i mykey.pfx VS_KEY_xxxxxxxxxxxxx”(mykey.pfx和VS_KEY_xxxxxxxxxxxxx都在build错误信息中)
  4. 如果需要,请输入密码

当我在没有以管理员身份运行“开发人员命令提示符”的情况下尝试此操作时,在运行“sn -i mykey.pfx VS_KEY_xxxxxxxxxxxxx”时得到帮助显示文本,但它不起作用。诀窍是确保我以管理员身份运行开发提示。

对于上下文,我使用的是 VS Community 2013.5、Window 7 x64 Professional 和 NET Framework 4.7

于 2017-09-07T12:54:34.617 回答
1
  1. 导航到项目属性 --> 签名
  2. 请从下拉列表中选择相应的 *.pfx 文件。
  3. 输入用于代码签名的先前密码。(密码:询问已签署程序集并创建自签名证书和代码签名的人)
  4. (可选)它会自动将您的证书添加为受信任的。可以使用管理控制台窗口查看(运行 MMC 命令并添加证书添加快照以查看证书)

在此处输入图像描述

于 2018-08-26T04:13:39.063 回答