使用pfx和visual studio签名具有强名称的程序集

时间:2014-02-21 09:27:54

标签: visual-studio visual-studio-2013 strongname pfx

所以问题在于:我们已经决定购买代码签名证书,我们从Godaddy购买了一个p12格式的证书。

经过研究,我发现p12和pfx是不同的扩展名,所以我将其重命名为pfx。我也有spc和p7c文件,但我不知道如何处理它们。

无论如何,我尝试将我的证书添加到我的Visual Studio 2013解决方案中,这就是我得到的:

  • 首先我收到密码提示,输入密码后我就是 收到错误

    "An attempt was made to reference a token that does not exist."
    
  • 在我第二次尝试安装pfx时,我没有收到任何提示或错误消息,但是当我构建时,我收到了错误

    "Cannot import the following key file: something.pfx 
    The key file may be password protected.
    To correct this, try to import the certificate again or 
    manually install the certificate to the Strong Name CSP with the following
    key container name: VS_KEY_33FA18307607ECFB"
    
  • 所以我正在使用

    sn -i something.pfx VS_KEY_33FA18307607ECFB
    

    完成时没有错误,但是当我尝试时 再次构建我使用相同的容器名称得到完全相同的错误。

    "Cannot import the following key file: something.pfx ....
    

我试图使用Goddady支持推荐的signtool作为替代方案但是虽然它标记了组件,但它并没有提供我需要的强大功能。

我还尝试使用

将证书从pfx提取到snk
    sn -p something.pfx key.snk

并选择延迟签名,但项目没有再次构建,错误更多。

修辞问题:为什么这么难?很多人都有这方面的问题。

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:22)

我刚遇到同样的问题,this article保存了我的培根!

我需要做的就是重新创建我的代码签名证书,KeySpec设置为2(AT_SIGNATURE),现在VS(2013)导入并签署我的程序集而不会出错! :-D

我意识到这与你的情景有点不同,但我希望这可以在某种程度上有所帮助......

答案 1 :(得分:20)

我拥有一份Comodo(.p12)证书并遇到了同样的问题并根据@SmithPlatts的答案和@Ares评论解决了这个问题。以下是那些不懂(如我)证书的人的详细演练:

  1. 使用管理员权限打开命令提示符。
  2. 键入命令:certutil -importPFX "<certFilepath>\<certFilename>.p12" AT_SIGNATURE(AT_SIGNATURE是使这项工作的原因,而不是[右键单击.p12文件] - &gt;'安装PFX')
  3. 输入您选择的密码。
  4. 使用管理员权限打开mmc.exe,文件 - &gt;添加/删除管理单元...
  5. 添加'证书'
  6. 选择“计算机帐户”
  7. 在控制台根目录/证书(本地计算机)/个人/证书下,找到您在第2步安装的证书。
  8. 右键单击Cert / All Tasks / Export - &gt; Next / Yes,导出私钥
  9. 转到'个人信息交换 - PKCS#12(.PFX)'
  10. 取消选中“包含所有证书...”。重要!如果选中,VS将在签名时生成此消息:“无法找到用于解密的证书和私钥”。
  11. 选中“导出所有扩展属性”(可选)。
  12. 如果您不打算将来重新导出,可以选中“删除私钥...”。
  13. 勾选密码并输入第3步的密码。
  14. 选择导出(.pfx)证书的文件路径和文件名。
  15. 使用导出的.pfx文件从VS。
  16. 对程序集/项目进行签名
  17. 构建项目以确保pfx正常工作。

答案 2 :(得分:9)

我遇到了这个问题并通过以管理员身份打开Visual Studio来修复它。

答案 3 :(得分:3)

我解决了这个问题,使用带有-keysig选项的openssl重新创建PFX。

openssl pkcs12 -export -out "MyPfx.pfx" -keysig -inkey "MyKey.key" -in "MyCer.cer"

答案 4 :(得分:1)

遇到了这个问题以及人们提到的相关问题。

在较大的IT部门的开发部门的公司环境中工作,我没有完整的本地管理员权限。因此,当我运行VS时,它不会以本地管理员身份运行。

一旦我设置了运行VS 2013/2015的快捷方式,我在唱大会时看到的问题就消失了。

这也可以节省一些时间,也可以从根部拔出头发。