【问题标题】:How to convert .snk file to .pfx file如何将 .snk 文件转换为 .pfx 文件
【发布时间】:2011-10-04 04:06:45
【问题描述】:

如何将 .snk 文件(用于对 .NET 程序集进行强名称签名)转换为适合相同目的的受密码保护的 .pfx 文件?

编辑:澄清一下,假设我在 VS 和项目属性中创建一个项目,签名,单击“新建强名称密钥文件”,并选择不使用密码保护密钥文件:

现在想象一年后我改变主意并想要添加一个密码 - 而不是通过创建一个新的密钥对来破坏程序集的身份。我该怎么做?

【问题讨论】:

  • 这能回答你的问题吗? How to create a snk from pfx / cer?
  • @Matt - 不是真的:这描述了如何朝相反的方向前进(pfx -> snk),尽管那里可能有一些线索
  • 我明白了。我已经删除了接近投票。

标签: .net assembly-signing


【解决方案1】:

您不能转换,但是您可以使用 Strong Name Tool (Sn.exe) 签署现有的 snk 文件。 (如果 snk 已经受到保护,则涉及一些步骤,因为您需要从证书中拆分 strong-name 部分)。

pfx 是在您选择密码保护选项时在 Visual Studio 中为您创建的私有证书。您输入的密码用于保护此证书。

这是用于开发还是用于商业发布?我不建议使用私钥对程序集进行签名以进行开发。

来自CLR Inside Out Article

虽然密码保护您的密钥文件是一个更好的解决方案 比将它们存储在透明中,它仍然不理想。你还是会 必须将 PFX 文件分发给所有开发人员,他们 所有人都必须知道 PFX 文件的密码。存在的秘密 像这样被广泛分享的东西往往不会保密很长时间。 理想情况下,您不必分发私钥来构建 并在开发过程中测试您的代码。

阅读 Using Strong Name Signatures 上的 CLR Inside Out (MSDN) 文章。

HTH,

【讨论】:

  • 是的:密码保护密钥文件比明文存储要好得多。因此,我想在不更改公钥和丢失程序集身份的情况下将我的(非密码保护的)snk 转换为(密码保护的)pfx。我没有多开发人员的问题,因此受密码保护的 pfx 是理想的,并且比延迟签名更简单。
  • 我认为密码保护仍然理想。但是......我相信使用强名称工具(Sn.exe)可以做到这一点 - 有提取公钥(-p)然后重新组合它们的选项。我以前不需要这样做,所以你必须自己确切地弄清楚如何(什么参数等)。
  • sn.exe 有提取公钥的选项,但没有提取私钥的选项。似乎提取私钥的唯一选项是 -i 将其复制到 CSP 中 - 不幸的是,它将其标记为不可导出
  • 抱歉,我无法提供更多帮助。 ... 可能您唯一的选择是放弃现有 snk 文件并使用 受密码保护的密钥进行签名。
  • Actually you can 从 PFX 中提取完整的 SNK,包括私钥。
猜你喜欢
  • 2017-01-27
  • 1970-01-01
  • 2016-08-18
  • 2012-04-15
  • 2018-07-18
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
相关资源
最近更新 更多