【问题标题】: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
相关资源
最近更新 更多