借助 NGINX 实现 QUIC+HTTP/3 对 OpenSSL 的支持
原文作者:Prabhat Dixit of F5
原文链接:借助 NGINX 实现 QUIC+HTTP/3 对 OpenSSL 的支持
转载来源:NGINX 中文官网
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
开发人员通常希望使用已发布的官方支持库来构建应用和基础架构。即使有了 HTTP/3,他们也非常需要一个既能支持 QUIC 而又不会增加生产基础架构维护成本或操作复杂性的便捷库。
对于许多 QUIC+HTTP/3 用户而言,默认的加密库是 OpenSSL。OpenSSL 默认安装在大多数基于 Linux 的操作系统上,堪称首屈一指的传输层安全(TLS)库,已被大多数网络应用广泛使用。
问题:OpenSSL 与 QUIC+HTTP/3 不兼容
即便得到广泛使用,OpenSSL 也没有提供 QUIC 支持所需的 TLS API,于是 OpenSSL 管理委员会决定自行实现完整的 QUIC 堆栈。这项工作是 OpenSSL v3.4 计划中的一项重要工作,但根据 OpenSSL 路线图,不太可能在 2024 年底之前完成。此外,OpenSSL 实现的初始最小可行产物不包含 QUIC API 实现,因此目前尚不明确用户可如何在 OpenSSL 上获得对 HTTP/3 的支持。
QUIC TLS 支持选项
在这种情况下,对于寻求 QUIC TLS 支持以满足 HTTP/3 需求的用户而言,现有两种选择:
-
OpenSSL QUIC 实现 – 如上所述,OpenSSL 目前正自行实现完整的 QUIC 堆栈。这项开发将所有 QUIC 功能封装到 OpenSSL 实现中,以便 HTTP/3 用户更轻松使用 OpenSSL TLS API,而不必担心无法利用 QUIC 特定功能。
-
支持 BoringSSL QUIC API 的库 – BoringSSL、quicTLS 及 LibreSSL 等各种 SSL 库(最初都是 OpenSSL 的分支)现在通过实现 BoringSSL QUIC API 提供 QUIC TLS 功能。不过,这些库并未像 OpenSSL 那样得以广泛采用。该选项还需从源代码构建 SSL 库,并将其安装到每台需要 QUIC+HTTP/3 支持的服务器上,这可能不是一个适合每个人的可行方案。也就是说,由于 OpenSSL QUIC TLS 实现尚未准备就绪,因此对于希望使用 HTTP/3 的用户来说,这是目前唯一的选择。
全新解决方案:OpenSSL 兼容层
NGINX 从这些挑战中受到启发,创建了 OpenSSL 兼容层,以简化使用 OpenSSL 的 QUIC+HTTP/3 部署,并帮助避免在生产环境中维护单独的 SSL 库所带来的复杂性。
OpenSSL 兼容层可搭配使用 NGINX 开源版的主线版(从版本 1.25.0 开始) 和 NGINX Plus R30,允许 NGINX 在 OpenSSL 之上运行 QUIC+HTTP/3,而无需对其进行修复或重建。这消除了对编译和部署第三方 TLS 库以获得 QUIC 支持的依赖。由于用户无需使用第三方库,因此也不必依赖这些库的进度表和路线图,这让 OpenSSL 兼容层成为了相对更容易部署到生产环境中的解决方案。
OpenSSL 兼容层的工作原理
OpenSSL 兼容层执行以下步骤:
-
将 QUIC 握手转换为 OpenSSL 支持的 TLS 1.3 握手。
-
将 TLS 握手消息传入和传出 OpenSSL。
-
从 OpenSSL 中获取握手和应用加密级别的加密密钥。
-
将 QUIC 传输参数传入和传出 OpenSSL。
根据目前 OpenSSL 的采用率及其官方 QUIC+HTTP/3 支持状态,我们相信一个简单、可扩展的 QUIC 启用选项不仅是一大进步,而且还将促进 HTTP/3 的采用,并提供有价值的反馈。最重要的是,我们相信 OpenSSL 兼容层将帮助我们为企业用户和整个 NGINX 社区提供更强大、更具可扩展性的解决方案。
注: 虽然我们通过 OpenSSL 兼容层的可用性确保为 NGINX 用户提供一个简单、可扩展的选项,但用户仍可选择在 NGINX 中使用第三方库,例如 BoringSSL、quicTLS 或 LibreSSL。如需确定最适合自己的方法,请考虑哪种方法最能满足您的需求,以及您对将库作为依赖项进行编译和管理的适应能力。
关于 0-RTT 的说明
0-RTT 是 QUIC 的一项功能,允许客户端在 TLS 握手完成之前发送应用数据。0-RTT 功能通过复用先前连接中的协商参数来实现,具体方法是客户端记住关键参数,并向服务器提供 TLS 会话票据,以便服务器恢复相同信息。
虽然该功能是 QUIC 的重要组成部分,但在 OpenSSL 兼容层中尚不受支持。如有需要使用 0-RTT 的特定用例,欢迎您积极反馈,以便我们制定路线图。
了解有关 NGINX 解决方案支持 QUIC+HTTP/3 和 OpenSSL 的更多信息
请立即开始使用 NGINX 的 OpenSSL 兼容层和 NGINX 开源版,或者开启 NGINX Plus 30 天免费试用。希望它对您有所帮助,欢迎提出反馈意见。
有关支持 QUIC+HTTP/3 和 OpenSSL 的 NGINX 解决方案的更多信息,请参阅以下资源。
NGINX 唯一中文官方社区 ,尽在 nginx.org.cn
更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: 开源社区官网 | 微信公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
特斯拉自动驾驶软件负责人:马斯克的技术直觉无与伦比
特斯拉 AI/自动驾驶软件负责人 Ashok Elluswamy 在最新长文《Elon and AI at Tesla》中详细阐述了埃隆·马斯克在特斯拉人工智能和自动驾驶技术发展中的重要作用。 Elluswamy 指出,马斯克不仅推动了强大的 AI 软件和硬件的开发,还在视觉和 AI 技术上押下重注,成功实现了自动驾驶系统的突破。马斯克的技术直觉和不懈努力使特斯拉在现实世界 AI 领域取得了领先地位。 马斯克对此表示感谢,并强调了 Elluswamy 和团队的贡献。 以下内容转载自:《特斯拉技术总监Ashok和Milan谈马斯克的推动力》,作者:瓦砾村夫 1. 北京时间6月9日中午,特斯拉自动驾驶负责人Ashok Elluswamy在X上发表了一篇题为《埃隆和特斯拉人工智能》的文章。全文如下: 埃隆·马斯克一直是特斯拉人工智能和自动驾驶的主要推动者。他总是推动我们去实现伟大的目标,即使这些想法在当时看来是不可能实现的。 举几个例子: 早在2014年,Autopilot还是从一台小得离谱的计算机上启动的,这台计算机只有约384KB的内存和微不足道的计算能力(甚至没有原生的浮点运算)。他要...
- 下一篇
专访丨从技术流派到实际应用,邱培峰全面解析向量数据库的选型要点
本文转载自公众号 IT168企业级《从技术流派到实际应用,邱培峰全面解析向量数据库的选型要点》 IT168 特别策划了《向量数据库选型指南》,笔者通过对话一线技术专家,全面剖析向量数据库的最新发展动态与核心技术优势,分享各个行业实际应用中遇到的挑战及成功案例,为用户在选型过程中提供有力支持。 本期,我们有幸采访到了拓数派向量数据库负责人邱培峰,针对向量数据库的技术路线选择,以及 PieCloudVector 有哪些独特的优势,向量数据库未来的发展趋势,以及选型建议等问题进行了深入交流。 向量数据库选型三大关键点 向量数据库作为专为向量搜索而设计的数据库,其学术研究和产业实践均取得了显著进展。然而,随着大语言模型技术的突破,与自然语言紧密相关的向量数据量呈指数级增长,这不仅加剧了对高效搜索的需求,还衍生出对向量与标量数据混合管理的新挑战。 传统数据库在应对向量与标量数据混合查询时显得力不从心,无法充分适应多模态数据处理和高效的相似度搜索复杂场景,难以满足企业日益增长的业务需求。而向量数据库擅长容纳图像、音频、文本等多模态数据,并通过将这些数据映射为向量表示,利用向量相似度进行关联和检索。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路