BLOG | NGINX

QUIC+HTTP/3-Unterstützung für OpenSSL mit NGINX

NGINX-Teil-von-F5-horiz-schwarz-Typ-RGB
Prabhat Dixit Miniaturbild
Prabhat Dixit
Veröffentlicht am 13. September 2023

Entwickler möchten Anwendungen und Infrastrukturen normalerweise mithilfe veröffentlichter, offizieller und unterstützter Bibliotheken erstellen. Auch bei HTTP/3 besteht ein großer Bedarf an einer praktischen Bibliothek, die QUIC unterstützt und weder die Wartungskosten noch die betriebliche Komplexität der Produktionsinfrastruktur erhöht.

Für viele QUIC+HTTP/3- Benutzer ist diese standardmäßige kryptografische Bibliothek OpenSSL . OpenSSL ist auf den meisten Linux-basierten Betriebssystemen standardmäßig installiert, ist die Transport Layer Security (TLS)-Bibliothek Nummer eins und wird von den meisten Netzwerkanwendungen verwendet.

Das Problem: Inkompatibilität zwischen OpenSSL und QUIC+HTTP/3

Trotz dieser weiten Verbreitung bietet OpenSSL nicht die für die QUIC-Unterstützung erforderliche TLS-API. Stattdessen beschloss das OpenSSL Management Committee, einen vollständigen QUIC-Stack selbst zu implementieren. Dieses Unterfangen ist ein erheblicher Aufwand, der für OpenSSL v3.4 geplant ist, aber laut der OpenSSL-Roadmap wird dies wahrscheinlich nicht vor Ende 2024 geschehen. Darüber hinaus wird das anfängliche Minimum Viable Product der OpenSSL-Implementierung nicht die QUIC-API-Implementierung enthalten, sodass es für Benutzer keinen klaren Weg gibt, HTTP/3-Unterstützung mit OpenSSL zu erhalten.

Optionen für QUIC TLS-Unterstützung

In dieser Situation gibt es für Benutzer, die QUIC TLS-Unterstützung für ihre HTTP/3-Anforderungen suchen, zwei Optionen:

  • OpenSSL QUIC-Implementierung – Wie oben erwähnt, arbeitet OpenSSL derzeit an der eigenständigen Implementierung eines vollständigen QUIC-Stacks. Diese Entwicklung wird die gesamte QUIC-Funktionalität in die Implementierung einbinden und es für HTTP/3-Benutzer dadurch wesentlich einfacher machen, die OpenSSL TLS API zu verwenden, ohne sich um QUIC-spezifische Funktionalitäten kümmern zu müssen.
  • Bibliotheken, die die BoringSSL QUIC API unterstützen – Verschiedene SSL-Bibliotheken wie BoringSSL , quicTLS und LibreSSL (alle begannen als Forks von OpenSSL) bieten jetzt QUIC TLS-Funktionalität durch Implementierung der BoringSSL QUIC API. Diese Bibliotheken sind jedoch nicht so weit verbreitet wie OpenSSL. Diese Option erfordert auch das Erstellen der SSL-Bibliothek aus dem Quellcode und deren Installation auf jedem Server, der QUIC+HTTP/3-Unterstützung benötigt, was möglicherweise nicht für jeden eine praktikable Option ist. Allerdings ist dies derzeit die einzige Option für Benutzer, die HTTP/3 verwenden möchten, da die OpenSSL QUIC TLS-Implementierung noch nicht fertig ist.

Eine neue Lösung: Die OpenSSL-Kompatibilitätsschicht

Wir bei NGINX fühlten uns von diesen Herausforderungen inspiriert und haben die OpenSSL-Kompatibilitätsschicht entwickelt, um QUIC+HTTP/3-Bereitstellungen, die OpenSSL verwenden, zu vereinfachen und die Komplexität zu vermeiden, die mit der Wartung einer separaten SSL-Bibliothek in Produktionsumgebungen verbunden ist.

Die OpenSSL-Kompatibilitätsschicht ist mit der NGINX Open Source-Hauptlinie seit Version 1.25.0 und NGINX Plus R30 verfügbar und ermöglicht es NGINX, QUIC+HTTP/3 auf OpenSSL auszuführen, ohne dass es gepatcht oder neu erstellt werden muss. Dadurch entfällt die Abhängigkeit vom Kompilieren und Bereitstellen von TLS-Bibliotheken von Drittanbietern, um QUIC-Unterstützung zu erhalten. Da Benutzer keine Bibliotheken von Drittanbietern verwenden müssen, verringert sich auch die Abhängigkeit von Zeitplänen und Roadmaps dieser Bibliotheken, wodurch die Lösung vergleichsweise einfacher in der Produktion bereitgestellt werden kann.

Funktionsweise der OpenSSL-Kompatibilitätsschicht

Die OpenSSL-Kompatibilitätsschicht implementiert diese Schritte:

  • Konvertiert einen QUIC-Handshake in einen TLS 1.3-Handshake, der von OpenSSL unterstützt wird.
  • Übergibt die TLS-Handshake-Nachrichten an OpenSSL und aus OpenSSL.
  • Ruft die Verschlüsselungsschlüssel für Handshake- und Anwendungsverschlüsselungsebenen aus OpenSSL ab.
  • Übergibt die QUIC-Transportparameter in und aus OpenSSL.

Angesichts der heutigen Verbreitung von OpenSSL und der Kenntnis seines Status mit offizieller QUIC+HTTP/3-Unterstützung glauben wir, dass eine einfache und skalierbare Option zur Aktivierung von QUIC ein Schritt in die richtige Richtung ist. Darüber hinaus wird dadurch die Einführung von HTTP/3 gefördert und wertvolles Feedback ermöglicht. Am wichtigsten ist, dass wir darauf vertrauen, dass die OpenSSL-Kompatibilitätsschicht uns dabei helfen wird, unseren Unternehmensbenutzern und der gesamten NGINX-Community eine robustere und skalierbarere Lösung bereitzustellen.

Notiz : Während wir sicherstellen, dass NGINX-Benutzer mit der Verfügbarkeit der OpenSSL-Kompatibilitätsschicht eine einfache und skalierbare Option haben, haben Benutzer weiterhin die Möglichkeit, Drittanbieterbibliotheken wie BoringSSL, quicTLS oder LibreSSL mit NGINX zu verwenden. Um zu entscheiden, welcher Weg für Sie der richtige ist, überlegen Sie, welcher Ansatz Ihren Anforderungen am besten entspricht und wie gut Sie mit dem Kompilieren und Verwalten von Bibliotheken als Abhängigkeiten vertraut sind.

Ein Hinweis zu 0-RTT

0-RTT ist eine Funktion in QUIC, die es einem Client ermöglicht, Anwendungsdaten zu senden, bevor der TLS-Handshake abgeschlossen ist. Die 0-RTT-Funktionalität wird durch die Wiederverwendung ausgehandelter Parameter einer vorherigen Verbindung ermöglicht. Dies wird dadurch ermöglicht, dass sich der Client kritische Parameter merkt und dem Server ein TLS-Sitzungsticket bereitstellt, mit dem der Server dieselben Informationen wiederherstellen kann.

Obwohl diese Funktion ein wichtiger Bestandteil von QUIC ist, wird sie in der OpenSSL-Kompatibilitätsschicht noch nicht unterstützt. Wenn Sie spezielle Anwendungsfälle haben, die 0-RTT erfordern, freuen wir uns über Ihr Feedback zur Gestaltung unserer Roadmap.

Erfahren Sie mehr über NGINX mit QUIC+HTTP/3 und OpenSSL

Sie können die OpenSSL-Kompatibilitätsschicht von NGINX noch heute mit NGINX Open Source verwenden oder eine 30-tägige kostenlose Testversion von NGINX Plus starten. Wir hoffen, Sie finden es nützlich und freuen uns über Ihr Feedback.

Weitere Informationen zu NGINX mit QUIC+HTTP/3 und OpenSSL finden Sie in den folgenden Ressourcen.


„Dieser Blogbeitrag kann auf Produkte verweisen, die nicht mehr verfügbar und/oder nicht mehr unterstützt werden. Die aktuellsten Informationen zu verfügbaren F5 NGINX-Produkten und -Lösungen finden Sie in unserer NGINX-Produktfamilie . NGINX ist jetzt Teil von F5. Alle vorherigen NGINX.com-Links werden auf ähnliche NGINX-Inhalte auf F5.com umgeleitet."