I have decided to make a few websites that I run offer TLSv1.3 only. The server is apache 2.4.65 running on Debian bookworm 12.12 with all patches applied at the time of writing. The task should be easy enough, but I have a problem. Leaving away irrelevant stuff, this is my SSL configuration for a virtual host that is my test object:
SSLProtocol TLSv1.3
SSLCipherSuite TLS_AES_256_GCM_SHA384
When I restart apache with this configuration, it fails and writes the following into the error log of the host in question:
[Sat Dec 13 12:24:26.278551 2025] [ssl:emerg] [pid 1994080:tid 1994080] AH01898: Unable to configure permitted SSL ciphers
[Sat Dec 13 12:24:26.278559 2025] [ssl:emerg] [pid 1994080:tid 1994080] SSL Library Error: error:0480006C:PEM routines::no start line (Expecting: EC PARAMETERS) -- Bad file contents or format - or even just a forgotten SSLCertificateKeyFile?
[Sat Dec 13 12:24:26.278564 2025] [ssl:emerg] [pid 1994080:tid 1994080] SSL Library Error: error:0A0000B9:SSL routines::no cipher match
I really can't make any sense of this. First, I don't understand what the log is trying to tell me, and second, I have verified (via openssl ciphers) that the openssl installation provides the cipher that I have configured. In fact, from what I have read, it even is the only cipher that is allowed in TLSv1.3.
When I leave away the SSLCipherSuite line at all, it doesn't work either. When I replace it by SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384 (a syntax that I I've come over when researching possible causes for the problem), it does not work either.
But when I use SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384, apache starts without problem, and Firefox connects to the respective host using TLSv1.3 as desired.
I would like to understand why the syntax from the first code block causes problems although the cipher definitely is allowed in TLS 1.3, and why it works when I allow the same (?) cipher using TLSv1.2 syntax although I have disallowed TLSv1.2, and also if this means that apache under any circumstances could be made use TLSv1.2 (instead of TLSv1.3) because of the non-TLSv1.3 cipher name.
openssl ciphers -tls1_3 TLS_AES_256_GCM_SHA384openssl ciphersspecifies only old-style (kx/auth/cipher/MAC) suites, not the TLS1.3 cipher/PRF ones; for 1.3 you must use-ciphersuites $listwhich is annoying; and-tls1_3only has effect if you also specify-s(see same link) which is just silly.openssl ciphers -ciphersuites TLS_AES_256_GCM_SHA384 NONEworks on some of my systems but not debian:12 -- as McCoy said, "quite logical ... in a pig's eye!"