Needs: HAProxy 2.8 or later, built with OpenSSL 3.5 or later · Last tested: 2026-10-13

Enable X25519MLKEM768 on HAProxy

HAProxy terminates TLS with the library it was built with. With OpenSSL 3.5 or later, X25519MLKEM768 is available; set it as the first curve on your TLS listeners.

Before you start

Option 1: for every listener

  1. In the global section, set the default curve list with X25519MLKEM768 first:
global
    ssl-default-bind-curves X25519MLKEM768:X25519:P-256
  1. Check and reload: haproxy -c -f /etc/haproxy/haproxy.cfg && systemctl reload haproxy.

Option 2: on one listener

  1. Add curves to the bind line that terminates TLS:
frontend web
    bind :443 ssl crt /etc/haproxy/certs/site.pem curves X25519MLKEM768:X25519:P-256
  1. Check and reload as above.

Keep X25519MLKEM768 first, or browsers that offer both get classical key exchange.

Then scan your domain below.

Check the change

Scan your domain to see whether every host now uses post-quantum key exchange.

Related check: Does my server support X25519MLKEM768?