C# 开源库应该进行数字签名吗

C# 开源库应该进行数字签名吗,c#,.net,open-source,digital-signature,authenticode,C#,.net,Open Source,Digital Signature,Authenticode,始终对可执行文件(exe、dll、ocx等)进行签名是一种很好的做法。另一方面,对于开源项目,它可能会考虑忽略所有其他开发人员对项目的贡献 这对我来说是一个道德困境,我希望听到有类似情况的人或为开源项目做出贡献的人对此发表更多的意见 我想指出的是,这个问题针对的是一个使用.NET 4以C#编写的开源项目,因此当用户单击可执行文件时,他或她将收到一条警告,指出如果该文件未经数字签名,则该文件来自不受信任的发布者 顺便说一下,这些程序集都已经有了强命名(签名),但它们还没有进行数字签名(即使用Ver

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

这对我来说是一个道德困境,我希望听到有类似情况的人或为开源项目做出贡献的人对此发表更多的意见

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


顺便说一下,这些程序集都已经有了强命名(签名),但它们还没有进行数字签名(即使用Verisign代码签名证书)

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

然而,在一般情况下,我认为使用私钥对官方发行版进行签名没有什么错。如果您对源代码做了一些操作,并从技术上重新编译“文件来自不受信任的发布者”,我可能信任Canonical,但我不信任您。只要可执行文件没有从特定的发布者处签名,也没有阻止它以预期的方式使用(GPL中的tivoization条款),我就没有理由不为可执行文件签名。

说这是一个“相当道德的困境”,这可能是不成比例的。你肯定想修改你的可执行文件,我真的不认为你签名有什么问题。例如,OrtoiseSVN的签名是“Stefan Kueng,开源开发者”

这就是说,最好为您的项目建立某种法律实体,然后以项目实体的名义获得代码签名证书。这样,您的项目名称显示为发布者,而不是您亲自签署可执行文件(从而“获得所有荣誉”)


如果你在美国,我会建议你成立一个或可能成立一个公司,该公司免征所得税,允许个人向该项目提供可扣税的捐款。(开源项目组织为501(c)(3)个实体,包括和。)我知道你在土耳其,所以你必须研究你当地的要求,以形成某种法律实体;一旦形成,您将能够以项目实体的名义而不是您自己的名义从CA获得证书。

Huh。NET应用程序在运行时不会显示“不受信任的发布者”警告。我一直在构建和运行.NET应用程序,但从未从其中一个应用程序中得到过您所描述的警告。是的,如果您从web下载它,当然不是您本地编译的应用程序。@Joe White:如果您使用安装程序或MSI分发某个应用程序,它必须是代码签名的,否则你会收到IE的警告和令人讨厌的UAC警告。最后一个屏幕是从未签名的可执行文件中获得的。问题是,无法获得组证书(需要合并),因此签名将是个人签名。@Teoman Soygul某人是项目经理,有人对网站上以汇编形式发布的内容和未发布的内容拥有最终决定权。这就是应该为应用程序签名的人(如果您正在执行autenticode)。如果您刚刚获得PGP签名,该组可以拥有自己的私钥,但很可能您仍然需要一个人来管理它。是的,获得可执行文件和由经理签名的安装程序包似乎是一种方法,因为我们无法获得公司证书,但仍然。。会有破碎的心josh3736,你打败了我:V你没有通过签署可执行文件来获得荣誉,只是证明它是“真实的”。但是,只有在项目背后有某种实体(例如基金会、指导委员会等),而不仅仅是一群开发人员才能做到这一点。@ Albiero:即使作为一批开发人员,创建一个实体来表示项目仍然很容易。(至少在我的地盘上;如果你不需要处理免税问题的话)。在俄亥俄州,你只需要125美元和一张印有你要成立的实体名称、姓名和邮寄地址的支票。你甚至不需要正式的章程或公司章程之类的东西。