与多个项目和开发商签订组件的最佳实践(Best practices for signing asse

2019-08-04 16:09发布

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

虽然创建密钥,并签署组件是非常简单和直接的过程,我很担心我们如何管理的最佳方式。

我的想法至今:

  • 每种溶液,其典型地具有项目3和20之间,将具有置于溶液中的根文件夹的单个.PFX密钥文件。
  • 每个解决方案都将会对密钥的唯一的强密码。

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

一些其他的想法:

  • 使用相同的密钥文件进行跨解决方案的所有项目。 这将使东西更容易为我们呢? 它是一个坏主意? 它甚至有可能?
  • 如果每个项目都有其独特的钥匙吗? 为什么,为什么不呢?

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

Answer 1:

在过去,我已经很有效地用于多种解决方案和项目的一个关键。 它是一种简单的方法,以确保只有人访问私有密钥文件可以发布经过强名称检查构建。

注意:要使用单独的密钥文件,我们发现最容易将文件添加为纽带,以每个项目。

的一个缺点我看到的是,有提供给您的开发人员密钥文件意味着它不是很私人,因为它应该是。 理想的情况下,尽可能少的人可能(如只是构建过程中)应该能够访问/知道密码。

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



Answer 2:

我们目前使用在我们的解决方案每一个项目一样强密钥(.SNK)。 根据你的项目是如何管理为每个项目不同的密钥。

如果你想要更高的安全性我想你可以重新对每一个项目的关键,但它的将是管理的噩梦。 请记住,在这一天结束时,SNK只是表明代码来自你的公司,并防止组件被更改,它不是一个巨大的内部安全特性。

对于这一点,你应该限制你的源代码控制,并期待在使用构建服务器等,如果你不信任/不希望开发人员创建的代码。



Answer 3:

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



文章来源: Best practices for signing assemblies with multiple projects and developers