与多个项目和开发人员签署程序集的最佳实践

时间:2009-09-10 04:59:31

标签: .net visual-studio assembly-signing

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

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

到目前为止我的想法:

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

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

其他一些想法:

  • 对解决方案中的所有项目使用相同的密钥文件。这会让我们更轻松吗?这是个坏主意吗?它甚至可能吗?
  • 每个项目都应该有自己独特的密钥吗?为什么,为什么不呢?

欢迎任何输入,好/坏经历和建议。 :)

3 个答案:

答案 0 :(得分:13)

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

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

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

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

答案 1 :(得分:6)

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

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

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

答案 2 :(得分:1)

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