17

我正在寻找在拥有 30 多个开发人员、20 多个解决方案和 60 多个项目的组织中应用签名程序集的建议和最佳实践。我们正在使用 Visual Studio Team System 2008 和 TFS。

虽然创建密钥和签署程序集是一个非常简单直接的过程,但我担心我们如何以最佳方式管理它。

到目前为止我的想法:

  • 每个解决方案(通常包含 3 到 20 个项目)都将在解决方案根文件夹中放置一个 .pfx 密钥文件。
  • 每个解决方案都有一个唯一的密钥强密码。

我们会遇到这种方法的任何问题吗?

其他一些想法:

  • 跨解决方案的所有项目使用相同的密钥文件。这会让我们的事情变得更容易吗?这是个坏主意吗?甚至可能吗?
  • 每个项目都应该有自己唯一的密钥吗?为什么,为什么不呢?

欢迎任何意见,好的/坏的经验和建议。:)

4

3 回答 3

13

过去,我非常有效地将单个密钥用于多个解决方案和项目。它是一种简单的方法,可确保只有有权访问私钥文件的人才能发布通过强名称检查的构建。

注意:要使用单密钥文件,我们发现将文件作为链接添加到每个项目是最简单的。

我看到的一个缺点是,让您的开发人员可以使用密钥文件意味着它不像应有的那样私密。理想情况下,尽可能少的人(例如,只是构建过程)应该有权访问/知道密码。

单一文件方法使密钥的管理保持简单(只有一个),同时仍然允许强命名的好处。

于 2009-09-10T05:16:25.977 回答
6

我们目前对解决方案中的每个项目都使用相同的强密钥 (.SNK)。根据您的项目,您如何为每个项目管理不同的键。

如果您想要更高的安全性,我想您可以为每个项目重新创建密钥,但管理起来将是一场噩梦。请记住,在一天结束时,SNK 只是显示代码来自您的公司,并防止程序集被更改,这不是一个巨大的内部安全功能。

为此,如果您不信任/不希望开发人员构建代码,您应该限制源代码控制并考虑使用构建服务器等。

于 2009-09-10T05:17:03.993 回答
2

您还可以将强名称密钥保存在根级别的文件夹中,与所有项目文件夹处于同一级别。当您在项目属性 -> 签名选项卡中选择此文件时,密钥文件将被复制到项目文件夹中。删除此文件。在记事本中打开 .csproj 文件。查找以下标签 mykey.snk 手动编辑密钥文件的路径,确保指定项目文件夹的相对路径。保存文件。现在在 Visual Studio 中打开项目属性。您可以看到更新的路径指向正确的位置。

于 2010-10-18T09:52:08.350 回答