关注了就能看到更多这么棒的文章哦~
LibreSSL languishes on Linux
By Jonathan Corbet
January 4, 2021
DeepL assisted translation
https://lwn.net/Articles/841664/
LibreSSL 项目在 2014 年的时候从 OpenSSL 中 fork 出来之后一直在持续开发。OpenBSD 中就支持 LibreSSL。不过,Linux 中对 LibreSSL 的支持进展从一开始就很缓慢,而且似乎情况即将变得更糟。LibreSSL 在 Linux 世界中越来越像是永远不会成功了。
OpenSSL 为许多重要的加密功能提供了底层支持。它提供了 TLS 和 SSL 的实现,以及许多用于密钥生成和签名等功能的实用程序。大多数需要在网络上安全地进行通信的程序最终都会链接到 OpenSSL 来利用它的这些功能。OpenSSL 在 Linux 世界中一直地位比较奇怪,这主要是因为它自己的特殊的 license,其中包含了一个广告要求,从而被人们认为是与 GNU GPL 不兼容。为了解决这个问题,许多 GPL-licensed 程序都专门提到了一个例外,那就是允许链接使用 OpenSSL。
我们的系统中有数量惊人的关键组件,这些组件人人都在使用,但没有人维护。在 2014 年的 Heartbleed 漏洞暴露出来,这无疑是在提醒大家,OpenSSL 就是这些无人维护的关键组件之一。多年来,OpenSSL 中只看到极少的开发工作,等于被搁置了。结果就是在 OpenSSL 代码库中充斥着无人维护的各种内容,以及灾难性的漏洞。Heartbleed 问题非常严重了,所以人们认为必须要做些事情来改进了。
其中之一就是 Linux 基金会建立了核心基础设施计划 (CII, Core Infrastructure Initiative)。目标是将资源引到那些没有得到充分支持的关键组件上。CII 在过去的几年里已经逐渐衰落了,但它确实成功地将开发者带到了像 OpenSSL 这样的项目中,并成功地解决了这些缺乏开发者支持的基础架构的许多严重问题。
OpenBSD 项目采取了它自己常用的方法,那就是建立了一个 LibreSSL fork。在 Heartbleed 事件发生后的几周内, LibreSSL 的开发者们声称已经删除了从 OpenSSL 中 fork 出来的代码中的差不多一半内容. OpenBSD 发行版就切换到了这个新的 library。从此,项目有了一个良好的开端。在近六年的时间里,LibreSSL 一直是一个可以独立生存的项目,能够定期发布版本。自 2018 年底发布 2.9.0 版本以来,该项目已经合并了来自 36 个开发者的 1554 个补丁,这说明它绝对很活跃的,而且还不断在完成新的工作。
不过,OpenSSL 项目在差不多相同的时间段内合并了超过 5000 个补丁。这些工作来自 276 名开发者。而且,大部分工作都得到了那些需要使用 OpenSSL 的组织的支持。大的贡献者中包括 Oracle、西门子、Akamai、红帽、IBM、VMware、英特尔和 Arm,还有 OpenSSL 软件基金会自己。这种程度的支持使得 OpenSSL 项目解决了许多长期存在的问题。到 2016 年,该项目已经有了一个更加稳定的基础。当然,安全问题仍然存在,毕竟是软件就有问题,但这些问题都在有序处理中,人们不再像以前那样担心 OpenSSL。
这样一来,Linux 发行版总体上并没有替换掉 OpenSSL。有两个发行版确实尝试过提供 LibreSSL,这就是 Alpine Linux 和 Gentoo。Alpine Linux 一度支持将 LibreSSL 作为其主要的 TLS 库,但在 2019 年 1 月的 3.9.0 版本中又改回了 OpenSSL。Gentoo 从未试图完全切换过去,但它支持将 LibreSSL 作为替代方案。
不过 Gentoo 中对 LibreSSL 的支持将在 2 月份结束。Gentoo 开发者 Michał Górny 在 12 月底首次提出了这一提案,他说 LibreSSL 比起 OpenSSL 没有提供什么好处,同时还带来了很多成本。他尤其针对许多需要打补丁才能配合 LibreSSL 使用的软件包,以及 LibreSSL 中源源不断发生的 regression 问题。其他许多开发者很快都表态支持这一改变。自称是第一个在 Gentoo 中编译使用 LibreSSL 的 Hanno Böck 说:
我相信,几乎所有 LibreSSL 原本希望解决的问题(一致的编码风格,清理过时的代码以及无用代码等)都已经在如今的 OpenSSL 中解决了。目前 LibreSSL 比起当初人们围绕他讲出的神话来说(当时背后的人对 OpenSSL 提出了有效的批评),已经没有多大实际价值了。
Anthony Basile 是目前 LibreSSL 在 Gentoo 上的负责人,他也表示同意,认为 LibreSSL "带来的麻烦比价值要多"。
主要的反对意见来自 Peter Stuge,他声称 "Gentoo 会提供给人们多种选择的,而我们在讨论的这个特定的组件是系统中最重要的组件之一"。他还指出,在系统中的任何模块,如果只有单一选择,这都是不健康的,所以我们能保持对 LibreSSL 这样的替代品的支持的话会是一件好事。不过就连 Stuge 似乎也同意,无法以目前的力度来持续支持 LibreSSL,并且也没有意义。但他认为 LibreSSL 应该继续作为发行版的一部分,让那些想费尽心思尝试使用它的人可以想办法用起来。
即使按这个降低过的目标来做也不是那么容易的,因为不可能在同一个系统上同时安装 OpenSSL 和 LibreSSL。不过人们还是在想办法按 Stuge 的建议来做,也就是暂时将 LibreSSL 继续保留在 Gentoo 软件库中,但它将被 "屏蔽掉(masked)",避免那些不知情的用户误安装了它。正如公告中所提到的,Gentoo 项目也不再提供那些修改其他软件包从而兼容 LibreSSL 的补丁了。
最重要的是,我们将不再维护下游对 LibreSSL 支持的补丁。所以那些补丁要么就由上游自己合并掉,要么就是 LibreSSL 上游代码最终能够跟 OpenSSL 更好地兼容。
现在确实已经很难找到一个 Linux 发行版还在试图使用 LibreSSL 替代 OpenSSL 了。
也许有人会下结论说,LibreSSL fork 已经失败了,但情况显然不是这样的,它还正在积极开发中,至少有几个 BSD 变种都在使用它。不过,我们可以说,这个 fork 工作做得太早了。这个项目是在 Heartbleed 披露后几周才创建的,当时人们做出这个结论(如果不 fork 出来就无法解决 OpenSSL 本身的问题)其实为时过早。事实证明,OpenSSL 并不像看起来那样难于修复,而 OpenBSD 也背负着自己建立 fork 带来的相应代价,而没能从重新焕发活力的 OpenSSL 开发中获益。
也许有一天,OpenSSL 会再次搁浅,世界会庆幸有一个 LibreSSL 项目可以依靠。替代品是好的,而能够创造这些替代品的能力是自由软件的一大优势。但是替代方案也可能会带来更高的开发负担,而且看起来 Linux 社区已经下了决定,认为这个特殊的替代方案带来的开销要大于它的价值。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~