开源库是否应该进行数字签名

时间:2011-04-15 14:15:14

标签: c# .net open-source digital-signature authenticode

始终签署可执行文件(exe,dll,ocx等)是一种很好的做法。另一方面,对于开源项目,可能会考虑忽视所有其他开发人员对项目的贡献。

这对我来说是一个非常道德的困境,我希望从处于类似情况的人或者为开源项目做出贡献的人那里听到更多关于此的意见。

我想请注意,这个问题是针对使用.NET 4用C#编写的开源项目,因此当用户单击可执行文件时,系统会提示他或她发出警告,指出该文件来自不受信任的发布者,如果没有数字签名。

顺便说一下,程序集都已经具有强命名(签名),但它们尚未进行数字签名(即使用Verisign代码签名证书)。

2 个答案:

答案 0 :(得分:4)

.Net是一种不同的野兽,因为许多功能要求(特别是库)要求使用强名称密钥对文件进行签名,但这些可以自签名而不会受到最终产品的投诉(它使用的程序不是库用于弹出您在原始问题中引用的消息框。)

然而,在一般情况下,我发现使用私钥签署官方发行版的团队没有任何问题。如果您对源做了一些事情并在技术上重新编译“来自不受信任的发布者的文件 ”,因为我可能信任Canonical,但我不相信你。只要未从特定发布者签名的可执行文件不会阻止它以预期的方式使用(GPL中的tivoization子句),我认为没有理由不签署您的可执行文件。

答案 1 :(得分:2)

说这是“相当道德的困境”,可能会让它不成比例。你肯定想code sign你的可执行文件,我真的没有看到你签署它的问题。例如,TortoiseSVN由“Stefan Kueng,开源开发者”签名。

也就是说,为您的项目构建某种法律实体可能是一个好主意,然后以项目实体的名义获得代码签名证书 。这样,您的项目名称就会显示为发布者,而不是您亲自签署可执行文件(从而“获得所有信用”)。

如果你在美国,我会建议组建LLC或可能501(c)(3) organization,免征所得税,并允许个人对项目进行免税捐赠。 (Many开源项目组织为501(c)(3)实体,包括WordPressjQuery。)我看到你在土耳其,所以你必须研究你的形成某种法人的当地要求;一旦形成,您将能够以项目实体的名义从CA获得证书而不是您自己的证书。