Cryptoramic

Server configuration

Hybrid key exchange in Envoy

Prefer a hybrid post-quantum key exchange group in Envoy.

Settings that make a server prefer a hybrid key exchange group. Group names differ by product, and hybrid groups need a TLS library that includes them (OpenSSL 3.5 or later, BoringSSL, Go 1.24 or later).

Prefer the hybrid group

common_tls_context:
  tls_params:
    tls_minimum_protocol_version: TLSv1_2
    ecdh_curves: ["X25519MLKEM768", "X25519", "P-256"]

Allow only post-quantum groups

common_tls_context:
  tls_params:
    tls_minimum_protocol_version: TLSv1_3
    ecdh_curves: ["X25519MLKEM768"]

Log the negotiated group

log_format:
  text_format_source:
    inline_string: "%DOWNSTREAM_REMOTE_ADDRESS% %DOWNSTREAM_TLS_VERSION% %DOWNSTREAM_TLS_CIPHER% %DOWNSTREAM_TLS_GROUP%\n"

Notes for Envoy

%DOWNSTREAM_TLS_GROUP% logs the negotiated group in the access log. Envoy uses BoringSSL, which has no native ML-KEM TLS group, so the list is the hybrid group alone.

Checked in a lab with Envoy 1.39.4, BoringSSL on Oct 18, 2026.

Other servers

nginx, Apache httpd, HAProxy, OpenSSL, Go crypto/tls, OpenSSH sshd, Java JSSE, IIS (Windows Schannel).

Back to perspectives

Find which of your servers still negotiate classical key exchange.

Discuss an assessment

Product screenshot

Illustrative assessment data