当项目是开源的时,谁应该拥有用于签署.NET程序集的私钥?

Joe*_*Joe 27 .net c# security open-source

更具体地说,是一个类库程序集.我最初的想法:

  • 让一些指定的管理员进行所有程序集签名.但是当bug修复和编写新版本时,二进制文件最终将取决于它们的存在(即使由于私人原因它只是一个小的变化).
  • 关键可以公开.但这违反了公钥加密实践,并且您失去了信任和身份的优势.
  • 允许最终开发人员和分销商使用自己的密钥对其进行签名.但是你失去了模块化,因为每次新的签名都会使它与其他一些版本不兼容.

当然,你可以不签署装配.但是,如果需要对其程序集进行签名的另一个项目引用了您的库,则会出现编译错误.

Ste*_*idi 11

我最近在一个开源项目中遇到了同样的问题.以下是我解决此问题的方法:

  • 源始终可通过存储库进行下载,但是发行版将包含源的快照以及已编译的版本.
  • 在使编译版本可用之前,我使用我的私钥对程序集进行签名.

因此,在您的情况下,准备发布的任何人都应该拥有密钥.库开发人员根本不需要了解它.

如果最终用户想要重新编译并使用自己的密钥签名,那很好.您可以通过比较签名程序集中存在的公钥来区分您的二进制文件和其他二进制文件.使公钥可用,其他人也可以这样做.

InternalsVisibleToAttribute用于引用强名称程序集时,管理此过程会有点麻烦.你可以在这里阅读我如何解决这个问题.