开发人员通常希望使用已发布的官方支持库来构建应用和基础架构。即使有了 HTTP/3,他们也非常需要一个既能支持 QUIC 而又不会增加生产基础架构维护成本或操作复杂性的便捷库。
对于许多 QUIC+HTTP/3 用户而言,默认的加密库是 OpenSSL。OpenSSL 默认安装在大多数基于 Linux 的操作系统上,堪称首屈一指的传输层安全(TLS)库,已被大多数网络应用广泛使用。
即便得到广泛使用,OpenSSL 也没有提供 QUIC 支持所需的 TLS API,于是 OpenSSL 管理委员会决定自行实现完整的 QUIC 堆栈。这项工作是 OpenSSL v3.4 计划中的一项重要工作,但根据 OpenSSL 路线图,不太可能在 2024 年底之前完成。此外,OpenSSL 实现的初始最小可行产物不包含 QUIC API 实现,因此目前尚不明确用户可如何在 OpenSSL 上获得对 HTTP/3 的支持。
在这种情况下,对于寻求 QUIC TLS 支持以满足 HTTP/3 需求的用户而言,现有两种选择:
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+HTTP/3 支持状态,我们相信一个简单、可扩展的 QUIC 启用选项不仅是一大进步,而且还将促进 HTTP/3 的采用,并提供有价值的反馈。最重要的是,我们相信 OpenSSL 兼容层将帮助我们为企业用户和整个 NGINX 社区提供更强大、更具可扩展性的解决方案。
注: 虽然我们通过 OpenSSL 兼容层的可用性确保为 NGINX 用户提供一个简单、可扩展的选项,但用户仍可选择在 NGINX 中使用第三方库,例如 BoringSSL、quicTLS 或 LibreSSL。如需确定最适合自己的方法,请考虑哪种方法最能满足您的需求,以及您对将库作为依赖项进行编译和管理的适应能力。
0-RTT 是 QUIC 的一项功能,允许客户端在 TLS 握手完成之前发送应用数据。0-RTT 功能通过复用先前连接中的协商参数来实现,具体方法是客户端记住关键参数,并向服务器提供 TLS 会话票据,以便服务器恢复相同信息。
虽然该功能是 QUIC 的重要组成部分,但在 OpenSSL 兼容层中尚不受支持。如有需要使用 0-RTT 的特定用例,欢迎您积极反馈,以便我们制定路线图。
请立即开始使用 NGINX 的 OpenSSL 兼容层和 NGINX 开源版,或者开启 NGINX Plus 30 天免费试用。希望它对您有所帮助,欢迎提出反馈意见。
有关支持 QUIC+HTTP/3 和 OpenSSL 的 NGINX 解决方案的更多信息,请参阅以下资源。
"This blog post may reference products that are no longer available and/or no longer supported. For the most current information about available F5 NGINX products and solutions, explore our NGINX product family. NGINX is now part of F5. All previous NGINX.com links will redirect to similar NGINX content on F5.com."