Enable post-quantum-resistant TLS key exchange
Scope
This guide enables post-quantum-resistant TLS key exchange for the Secure Mail HTTPS service. It uses the native ML-KEM support in OpenSSL 3.5.
Minimum operating-system versions:
- EL9: version 9.7 or later
- EL10: version 10.1 or later
The configuration uses a hybrid group. A TLS connection therefore combines ML-KEM with a conventional key exchange. Existing RSA or ECDSA HTTPS certificates remain valid and do not need to be replaced.
Prerequisites
Confirm the operating-system and OpenSSL versions:
cat /etc/redhat-release
openssl version
OpenSSL must report version 3.5 or later.
Back up the Apache TLS configuration:
cp -a /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.before-pqc
In an multi-node installation, make the change only on ACTIVE node. The changes will be synced to PASSIVE node automatically.
Configure Apache
Edit /etc/httpd/conf.d/ssl.conf.
Ensure that TLS 1.2 and TLS 1.3 are enabled:
SSLProtocol -all +TLSv1.3 +TLSv1.2
Replace the existing SSLOpenSSLConfCmd Curves directive with:
SSLOpenSSLConfCmd Groups X25519MLKEM768:X25519:secp384r1:prime256v1
X25519MLKEM768 is preferred. The conventional groups provide compatibility for clients that do not support ML-KEM.
Validate the configuration and restart Apache:
httpd -t
systemctl restart httpd
systemctl --no-pager --full status httpd
Do not restart Apache if httpd -t reports an error. Restore the backup or correct the configuration first.
Verify the Result
Run the test with OpenSSL 3.5 or later. Replace mail.example.com with the Secure Mail host name.
Test the hybrid ML-KEM group:
openssl s_client \
-connect mail.example.com:443 \
-servername mail.example.com \
-tls1_3 \
-groups X25519MLKEM768 </dev/null
The connection must complete successfully. Its output should identify X25519MLKEM768 as the negotiated TLS 1.3 group.
Also test the conventional fallback:
openssl s_client \
-connect mail.example.com:443 \
-servername mail.example.com \
-tls1_3 \
-groups X25519 </dev/null
Finally, open the Secure Mail user and administration interfaces in supported browsers and confirm that login and normal use work.
Rollback
Restore the Apache configuration and restart the service.
cp -a /etc/httpd/conf.d/ssl.conf.before-pqc /etc/httpd/conf.d/ssl.conf
httpd -t
systemctl restart httpd