pqcstatus
Leitfaden

Post-Quanten-TLS in nginx, Apache, HAProxy und Caddy aktivieren

Die Direktiven, die Voraussetzungen und wie Sie die Änderung prüfen, ohne ältere Clients auszusperren.

· 8 min

Die Aktivierung der hybriden Post-Quanten-Schlüsseleinigung ist meist eine einzeilige Änderung, vorausgesetzt, die zugrunde liegende TLS-Bibliothek unterstützt ML-KEM. Dieser Leitfaden behandelt die vier gängigsten Server. Die folgende nginx-Konfiguration haben wir in unseren eigenen Integrationstests mit OpenSSL 3.5 getestet.

Schritt 0: die TLS-Bibliothek prüfen

ML-KEM-Gruppen sind in OpenSSL 3.5 und neuer integriert. Prüfen Sie die Version, die Ihr Server tatsächlich verwendet; sie kann von der des Kommandozeilen-Tools abweichen:

openssl version
nginx -V 2>&1 | grep -o 'OpenSSL [0-9.]*'
apachectl -V | grep -i openssl
haproxy -vv | grep -i openssl

Ist die Version älter als 3.5, aktualisieren Sie die Pakete des Betriebssystems oder verwenden Sie einen Build, der gegen ein aktuelles OpenSSL gelinkt ist. Debian 13 (trixie) liefert zum Beispiel OpenSSL 3.5 aus. Ohne diese Voraussetzung schlagen die folgenden Direktiven fehl oder werden ignoriert.

nginx

Erlauben Sie im server-Block (oder im http-Block) TLS 1.3 und setzen Sie die hybride Gruppe an die erste Stelle, gefolgt von klassischen Fallbacks:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;

Trotz ihres Namens legt ssl_ecdh_curve die Liste der Gruppen für die Schlüsseleinigung fest, die an OpenSSL übergeben wird. Laden Sie die Konfiguration mit nginx -t && systemctl reload nginx neu.

Apache HTTP Server

Ist mod_ssl gegen OpenSSL 3.5 oder neuer gelinkt, übergeben Sie die Gruppenliste direkt an OpenSSL:

SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLOpenSSLConfCmd Groups X25519MLKEM768:X25519:prime256v1

Platzieren Sie die Direktiven im virtuellen Host oder in der globalen SSL-Konfiguration, führen Sie dann apachectl configtest aus und laden Sie neu.

HAProxy

Legen Sie im Abschnitt global die Standardgruppen für alle Bind-Zeilen fest:

global
    ssl-default-bind-options ssl-min-ver TLSv1.2
    ssl-default-bind-curves X25519MLKEM768:X25519:P-256

Sie können curves auch auf einer einzelnen bind-Zeile setzen. HAProxy muss mit OpenSSL 3.5 oder neuer gebaut sein; prüfen Sie das mit haproxy -vv.

Caddy

Caddy nutzt den TLS-Stack von Go, der X25519MLKEM768 ab Go 1.24 standardmäßig aktiviert. Aktuelle Caddy-Versionen, die mit Go 1.24 oder neuer gebaut wurden, handeln die Gruppe daher ohne jede Konfiguration aus. Schränkt Ihr Caddyfile die Kurven in einem tls-Block ein, fügen Sie die hybride Gruppe ausdrücklich hinzu:

tls {
    curves x25519mlkem768 x25519
}

Hinter einem CDN oder Load Balancer

Aktivieren Sie die Gruppe auf der Komponente, die TLS für Besucher terminiert: dem CDN, dem Cloud-Load-Balancer oder dem Reverse Proxy. Verfahren Sie anschließend genauso mit der Verbindung von dieser Komponente zu Ihren Ursprungsservern. Sie ist eine separate TLS-Verbindung und wird oft vergessen.

Einen Fallback behalten

Behalten Sie nach der hybriden Gruppe immer eine klassische Gruppe wie X25519. Clients ohne ML-KEM-Unterstützung handeln dann einfach X25519 aus, sodass nichts ausfällt. Der hybride ClientHello ist etwa ein Kilobyte größer; einige alte Middleboxes haben in der Vergangenheit große Handshakes fehlerhaft verarbeitet. Auch deshalb sollten Sie den Fallback behalten und nach der Änderung die Fehler überwachen.

Überprüfen

openssl s_client -connect www.example.com:443 -servername www.example.com \
  -groups X25519MLKEM768 -brief </dev/null | grep 'Negotiated'

Sie sollten Negotiated TLS1.3 group: X25519MLKEM768 sehen. Sie können auch den PQC-Status-Scanner nutzen, der zusätzlich TLS-Versionen, Cipher Suites und die Zertifikatskette prüft. Dokumentieren Sie die Änderung mit Datum in Ihrem kryptografischen Inventar.

Welche Gruppe sollten Sie wählen?

X25519MLKEM768 ist die Standardwahl: von der IANA empfohlen und von allen großen Browsern unterstützt. Folgen Sie für sensible Systeme den Empfehlungen der ANSSI, die das höchste Sicherheitsniveau bevorzugt, stellen Sie SecP384r1MLKEM1024 für Clients, die es unterstützen, an die erste Stelle. Reine ML-KEM-Gruppen ohne klassische Komponente werden weder von der ANSSI noch vom BSI empfohlen; beide verlangen den hybriden Modus.

Häufig gestellte Fragen

Funktionieren ältere Browser nach der Aktivierung von ML-KEM noch?

Ja, solange eine klassische Gruppe wie X25519 in der Liste bleibt. Clients, die die hybride Gruppe nicht kennen, handeln die klassische aus, genau wie bisher.

Brauche ich ein neues Zertifikat, um Post-Quanten-TLS zu aktivieren?

Nein. Die Schlüsseleinigung ist unabhängig vom Zertifikat. Ihr bestehendes RSA- oder ECDSA-Zertifikat funktioniert weiter, während die Sitzungsschlüssel durch den hybriden Austausch geschützt sind.

Warum wird nach der Konfigurationsänderung nichts ausgehandelt?

Meist ist der Server gegen eine OpenSSL-Version älter als 3.5 gelinkt, TLS 1.3 ist deaktiviert oder ein CDN terminiert TLS vor Ihrem Server. Prüfen Sie die Version der Bibliothek und testen Sie den Server direkt.

Sollte ich reines ML-KEM ohne X25519 aktivieren?

Nicht für den allgemeinen Einsatz. ANSSI und BSI empfehlen den hybriden Modus, der die klassische Sicherheit bewahrt, falls im neuen Algorithmus eine Schwachstelle gefunden würde.