curl 之父发文介绍 OpenSSL 分支家族
curl 之父近日发表文章介绍 OpenSSL 分支家族,展示了它们的差异、相似之处,以及支持它们所需的一些见解。
译文如下:
curl 支持使用 11 种不同的 TLS 库进行编译。其中六个库是 OpenSSL 或其分支。让我向你展示它们的差异、相似之处,以及支持它们所需的一些见解。
SSLeay
这一切都始于 SSLeay。这是我发现的第一个 SSL 库,我们使用这个库在 1998 年春天为 curl 添加了第一个 HTTPS 支持。显然,SSLeay 项目早在 1995 年就已经启动了。
那是一个我们还只支持 SSL 的年代;TLS 会在之后才出现。
OpenSSL 一直拥有一个古怪、不一致且极其庞大的 API 集(其中一大部分是从 SSLeay 继承而来的),这进一步被稀疏的文档所复杂化,这些文档留给用户去依靠自己的想象力和技能去查阅源代码,以获取最后的细节解答(即使在 2025 年今天也是如此)。在 curl 中,我们经常收到关于如何使用这个库的偶尔问题报告,即使已经过了几十年。 presumably,这同样适用于所有 OpenSSL 用户。
OpenSSL 项目经常受到批评,认为他们在几年前升级到版本 3 之后,在性能方面有所疏忽。他们也一直进展缓慢或不愿采用新的 TLS 技术,例如 QUIC 和 ECH。
尽管如此,OpenSSL 已经成为一种主导的 TLS 库,尤其是在开源领域。
LibreSSL
回到Heartbleed事件时期,LibreSSL分叉出来并成为独立的项目。他们删除了他们认为不属于库中的功能,创建了自己的TLS库API。几年后,苹果在macOS上使用LibreSSL提供curl。他们有一些本地修补,使它行为与其他不同。
LibreSSL在QUIC的支持上落后,不支持SSLKEYLOGFILE、ECH,而且如今在实现新功能方面似乎比OpenSSL更慢。
curl自从创建以来就与LibreSSL完美配合。
BoringSSL
在Heartbleed事件时期由Google分叉出来。Google为Google做的,他们没有公开发布过,清理了很多原型和变量类型,并在QUIC API推动中处于领先地位。总体而言,大多数新的TLS发明都已在BoringSSL中实现和支持,比其他分叉更早。
Google在Android的其他地方也使用这个。
curl 从创建以来就与 BoringSSL 完美配合。
AmiSSL
一个为使 OpenSSL 能够在 AmigaOS 上正确编译和运行而制作的 OpenSSL 分支或变种。我对它了解不多,但在这里包含它是为了完整性。它似乎基本上是为 Amiga 系统移植的 OpenSSL。
当为 AmigaOS 编译时,curl 也能与 AmiSSL 兼容。
QuicTLS
由于 OpenSSL 延迟响应并拒绝提供 QUIC API,其他分支在 2020 年初期(我尚未看到有人解释原因)采取了行动。微软和 Akamai 分支了 OpenSSL,产生了 QuicTLS,此后它试图成为一个 轻量级 的分支,主要只是在与 BoringSSL 和 LibreSSL 支持相同风格的基础上添加 QUIC API。轻量级 的含义是它们密切跟踪上游开发,并且除了 QUIC API 之外,没有打算在其他方面偏离。
在 OpenSSL 3.5 中,他们终于提供了一个与 fork(包括 QuicTLS)提供的 QUIC API 不同的 QUIC API。我认为这促使 QuicTLS 重新考虑其未来的发展方向,但我们仍在等待确切的进展。
curl 自从创建以来就与 QuicTLS 完美配合。
AWS-LC
这是由亚马逊维护的一个 BoringSSL 分支。与 BoringSSL 不同的是,他们确实进行了实际的(频繁的)发布,因此看起来像一个项目,即使是非亚马逊用户也可以实际使用和依赖——尽管他们存在的目的是 _维护一个与 AWS 使用的软件和应用程序兼容的安全 libcrypto _。令人惊讶的是,他们维护的不仅仅是“仅仅” libcrypto。
这个分支最近显示出大量的活动,甚至在核心部分也是如此。2025 年 5 月由 HAProxy 团队进行的基准测试 表明,AWS-LC 显著优于 OpenSSL。
AWS-LC 提供的 API 与 BoringSSL 的 API 并不完全相同。
curl 与 AWS-LC 从 2023 年初开始就配合得非常好。
家族树
OpenSSL 分支家族树
OpenSSL 分支家族现状
这六个不同的分支各自有其特定的特性、API 和功能,这些在不同版本中也会发生变化。目前我们仍然支持这六个分支,因为人们似乎仍在使用它们,而且维护起来是可行的。
我们使用相同的 单个源代码文件 支持所有这些分支,并通过不断增长的 #ifdef 逻辑来实现。我们通过在 CI 中使用这些分支进行构建验证,尽管只使用了一小部分最近的版本。
随着时间的推移,这些分支似乎正在逐渐彼此分离。我认为这还不构成一个问题,但我们当然在监控这种情况,可能在某个时候需要进行一些内部重构以适应这种变化。
未来
我无法预见会发生什么。如果历史是一堂课,我们似乎更倾向于走向更多的分支,而不是更少的分支。但当然,每一位阅读这篇博客文章的读者现在都会思考,所有这些分支所耗费的重复努力以及由此带来的隐含低效性到底有多少。这不仅适用于这些库本身,也适用于像curl这样的用户。
我认为我们只能等待观察。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MiniMax 上线 AI 音色设计功能
MiniMax 稀宇科技宣布旗下 MiniMax Audio 上线了「Voice Design 音色设计」功能。 音色的维度一般分成音频质量、发声方式、情感基调以及人物画像。该功能根据用户对音色需求的描述,模型自动拆解成音色相关的描述信息,并根据上述的描述来得到一个新的音色编码。同视频模型类似,该功能支持对音色的抽卡,如果不满意,多试几次,很容易得到理想中的专属独一音色,并可存储下来做后续的音频内容创作。 据介绍,通过 Voice Design 音色设计,用户可以通过自然语言来描述自己心中所想的音色,实现对多个维度的精准控制,甚至生成世界上不存在的音色。同时,Voice Design 与 Speech 02 语音模型在链路上相配合,用户在文字转语音中可真正实现了「所需即所得」,以「任意语言 × 任意口音 × 任意音色」,实现可全自定义的无限组合。 此外,Voice Design 解决了语音合成领域的两个挑战:难以精准匹配用户各个细分场景下的多样需求;复刻音色需要用户花费大量时间准备输入素材,并且存在潜在的版权风险。 目前,Voice Design 已上线 MiniMax Audio 国...
- 下一篇
“开源惠全球·集智创未来”——2025全球数字经济大会全球开源创新发展论坛即将召开
开源是数字时代以开放、共建、共享、共治为主要特征的新型生产方式,已经成为全球信息技术产业发展的重要协作方式和生态构建形式。为抢抓开源繁荣发展机遇,促进全球数字协作,助力北京市数字友好城市建设,全球开源创新发展论坛(以下简称“论坛”)将于7月5日上午在北京国家会议中心举行。论坛由全球数字经济大会组委会主办,国家工业信息安全发展研究中心、开源中国、CNCF基金会、国际内源基金会联合承办。 本次论坛以“开源惠全球·集智创未来”为主题,旨在搭建国际开源交流合作平台,广泛邀请国内外开源领域知名专家学者,顶尖开源组织、先锋开源企业、开源社区代表等齐聚一堂,聚焦全球开源技术的最新发展趋势,探讨优质开源社区培育路径,共商开源区域协作,推动形成开源发展合力,充分释放数字经济的放大、叠加、倍增效应,助力全球数字经济高质量发展。本次论坛有以下亮点: 亮点一:全球协作,国际开源创新聚合力 论坛邀请开源中国、CNCF基金会、国际内源基金会等国内外知名开源组织联合承办,广泛汇聚Apache基金会、Linux基金会、FOSSASIA(亚洲开源)、华为、平凯星辰、蚂蚁等开源机构,重磅嘉宾云集,共同推动国内外开源组织、...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8