使用相同的PFX

时间:2015-05-15 16:56:11

标签: .net visual-studio visual-studio-2012 clickonce code-signing

我的应用程序有以下限制:

  • 必须通过ClickOnce分发,并使用受信任证书签署清单。
  • 组件也必须签名。

我有一个PFX发给我公司进行代码签名(1.3.6.1.5.5.7.3.3),如果我生成一个新的密钥对,这似乎可以用于签署清单。但是,如果我尝试使用此PFX对程序集进行签名,则会出现以下错误:

  

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

     

导入密钥文件" mycert.pfx"被取消了。

我确认了

  • 证书通过KeyPal以强名称CSP。
  • PFX包含私钥。

我已尝试以下方法来解决此问题:

  • 通过MMC删除证书并通过Visual Studio(项目属性→签名中的从文件中选择'选项),MMC,控制台(certutil)和&将其重新添加到我的个人商店#39;安装PFX'探险家的向导。这些似乎没有任何区别。
  • 使用sn从cSP中删除证书并使用sn和Visual Studio重新添加证书,只需选择要对程序集进行签名的PFX(即使已经存在,也必须选择<Browse>下拉列表)。这些似乎都没有任何区别。
  • 更改PFX文件上的密码,这只会更改错误中VS_KEY_之后显示的哈希值。更改密码后执行上述任何操作似乎没有任何区别。
  • 使用sn -p从PFX生成SNK并使用该SNK对程序集进行签名。这会导致以下错误:

      

    签署程序集时遇到密码错误&my; myproj.dll&#39; - &#39;签署程序集时出错 - 参数不正确。 &#39;

正如我所说,我可以通过在Visual Studio中选择<New>来使用生成的密钥对对程序集进行签名。但是,我真的很想知道如何使用我用于清单的相同PFX来签署此程序集。有什么建议吗?

0 个答案:

没有答案