6

最好始终对可执行文件(exe、dll、ocx 等)进行签名。另一方面,对于开源项目,它可能会考虑忽略所有其他开发人员对该项目的贡献。

这对我来说是一个相当道德的困境,我希望听到更多来自处于类似情况的人或为开源项目做出贡献的人的意见。

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

顺便说一句,这些程序集都已经具有强命名(签名),但它们还没有经过数字签名(即使用 Verisign Code 签名证书)。

4

2 回答 2

5

.Net 是一个不同的野兽,因为许多功能需要(尤其是库)需要使用强名称密钥对文件进行签名,但是这些可以自签名而不会受到最终产品的投诉(它使用程序证书而不是库来弹出向上您在原始问题中提到的那个消息框)。

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

于 2011-04-15T14:28:52.397 回答
4

说这是“相当道德的困境”可能是夸大其词了。您肯定想对您的可执行文件进行代码签名,而我并没有真正看到您对其进行签名的问题。例如,TortoiseSVN 由“Stefan Kueng, Open Source Developer”签名。

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

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

于 2011-04-15T15:18:20.593 回答