【问题标题】:Should Open-Source Libraries be Digitally Signed开源库是否应该进行数字签名
【发布时间】:2011-04-15 14:15:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • 嗯? .NET 应用程序在运行时不会显示“不受信任的发布者”警告。我一直在构建和运行 .NET 应用程序,但从未收到您从其中一个应用程序中描述的警告。
  • 是的,如果你从网上下载,当然不是你本地编译的。
  • @Joe White:如果您使用安装程序或作为 MSI 分发某些东西,则必须对其进行代码签名,否则您会收到来自 IE 的警告讨厌UAC 警告。 Here's an example 你所看到的——最后一个屏幕是你从一个未签名的可执行文件中得到的。

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


【解决方案1】:

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

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

【讨论】:

  • 问题是,无法获得团体证书(需要合并),所以签名将是个人的。
  • @Teoman Soygul 有人是项目经理,有人说了算,什么是编译后的形式发布在网站上,什么不是。那就是应该签署应用程序的人(如果您正在执行 auenticode)。如果您只是获得 PGP 签名,该组可以拥有自己的私钥,但您可能仍然需要一个人来管理它。
  • 是的,获得经理签名的可执行文件和安装程序包似乎是我们无法获得公司证书的方式,但仍然......会有心碎......
【解决方案2】:

说这是“相当道德的困境”可能是夸大其词了。你肯定想code sign你的可执行文件,我真的看不出你签名的问题。例如,TortoiseSVN 由“Stefan Kueng, Open Source Developer”签名。

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

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

【讨论】:

  • josh3736,你打败了我:V 你没有通过签署可执行文件来获得荣誉,只是证明它是“真实的”。但这只能在项目背后有某种实体(例如基金会、指导委员会等)的情况下才能做到,而不仅仅是一群开发人员。
  • @Albiero:即使作为一群开发人员,组成一个实体来代表你的项目仍然很容易(至少在我的树林里;如果你不需要处理免税)。在俄亥俄州,您只需要 125 美元和一个 form 以及您正在组建的实体的名称以及您的姓名和邮寄地址。您甚至不需要正式的章程或公司章程或类似的东西。
猜你喜欢
  • 1970-01-01
  • 2011-01-16
  • 2013-07-01
  • 2012-10-18
  • 2015-05-02
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多