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.