我正在创建一个入门工具包,用于将已编译的程序集从开源项目安装到GAC中,以便更轻松地引用模板中的程序集。由于他们要进入GAC,他们需要签名。
我是否需要密码保护并保护密钥文件,或者是否可以将其保持打开并将文件包含在源代码管理中?
答案 0 :(得分:10)
强名称签名有几个目的(虽然不用于实际防止篡改程序,这是常见的误解) - 在您的情况下使用强密钥来唯一识别(和验证) GAC要求的特定程序集的特定版本。防止其他程序集欺骗的另一种用法在这种情况下似乎没有必要(如果我错了,请纠正我)。出于这个原因,我认为将密钥保持打开(不受密码保护)并将文件包含在源代码管理中是完全可以接受的。据我所见,你不会通过密码保护密钥来阻止任何你不想要的东西。 (但是,如果您可以提供有关安全上下文的更多详细信息,我可能需要修改该视图。)
另外,请参阅this MSDN article,详细了解如何正确使用强名称签名。
答案 1 :(得分:2)
我想说在源代码控制中包含一个“开发”键,以便使构建更容易,并避免强迫人们创建和使用自己的密钥。源代码控制的关键是安全无意义,因为任何人都可以使用它进行签名。如果人们想要签署他们的开源项目的构建,他们可以替换他们可以以他们喜欢的方式管理的密钥。
您还可以提供下载版本,使用安全密钥签名(您不会给任何人),但对于想要使用这些二进制文件的人,他们需要信任您。你值得信赖吗? :)