As part of my CISSP training, I have decided to get a better understanding of cipher suites and curves. Below is part of the Apache2 configuration. I have TLS v1.2 and TLS v1.3. TLSv1.2 is still used across the planet. I have excluded http:/1.1 from the protocols.
SSLProtocol -all +TLSv1.3 +TLSv1.2
Protocols h2 h2c
# # SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# SSLOpenSSLConfCmd Curves secp521r1:brainpoolP512r1:brainpoolP384r1:brainpoolP256r1:secp384r1:prime256v1:secp256k1:secp224k1:secp224r1:prime192v1
SSLOpenSSLConfCmd Groups sect571r1:sect571k1:secp521r1:sect409k1:sect409r1:secp384r1:brainpoolP512r1:brainpoolP384r1
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:+HIGH:!MEDIUM:!LOW:!CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!DES:!RC4:!MD5:!RSA:!3DES:!SRP:!DSS:!SHA1:!SHA256:!SHA384
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
The SSL Cipher Suite configuration
Provide a balance of TLS 1.2 and TLS 1.3 ciphers that are High level. It disables the weak ciphers. Lily @ SSLLabs.com recommended disabling the Safari 6 to 8 ciphers.
# # SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# SSLOpenSSLConfCmd Curves secp521r1:brainpoolP512r1:brainpoolP384r1:brainpoolP256r1:secp384r1:prime256v1:secp256k1:secp224k1:secp224r1:prime192v1
These lines commented out where weaker curves that I upgraded to
SSLOpenSSLConfCmd Groups sect571r1:sect571k1:secp521r1:sect409k1:sect409r1:secp384r1:brainpoolP512r1:brainpoolP384r1
Protocols | |
TLS 1.3 | Yes |
TLS 1.2 | Yes |
TLS 1.1 | No |
TLS 1.0 | No |
SSL 3 | No |
SSL 2 | No |
Cipher Suites | ||
# TLS 1.3 (suites in server-preferred order) | ||
TLS_AES_256_GCM_SHA384 (0x1302 ) ECDH x25519 (eq. 3072 bits RSA) FS | 256 | |
TLS_CHACHA20_POLY1305_SHA256 (0x1303 ) ECDH x25519 (eq. 3072 bits RSA) FS | 256 | |
TLS_AES_128_GCM_SHA256 (0x1301 ) ECDH x25519 (eq. 3072 bits RSA) FS | 128 | |
# TLS 1.2 (suites in server-preferred order) | ||
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030 ) ECDH x25519 (eq. 3072 bits RSA) FS | 256 | |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f ) ECDH x25519 (eq. 3072 bits RSA) FS | 128 | |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x9f ) DH 2048 bits FS | 256 | |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e ) DH 2048 bits FS | 128 | |
TLS_DHE_RSA_WITH_AES_256_CCM_8 (0xc0a3 ) DH 2048 bits FS | 256 | |
TLS_DHE_RSA_WITH_AES_256_CCM (0xc09f ) DH 2048 bits FS | 256 |
SSL Labs Handshake Simulation
Android 4.4.2 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Android 5.0.0 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp521r1 FS |
Android 6.0 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp384r1 FS |
Android 7.0 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Android 8.0 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Android 8.1 | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Android 9.0 | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
BingPreview Jan 2015 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Chrome 49 / XP SP3 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp384r1 FS |
Chrome 69 / Win 7 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Chrome 70 / Win 10 | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Chrome 80 / Win 10 R | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Firefox 31.3.0 ESR / Win 7 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp521r1 FS |
Firefox 47 / Win 7 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDH secp521r1 FS |
Firefox 49 / XP SP3 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Firefox 62 / Win 7 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Firefox 73 / Win 10 R | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Googlebot Feb 2018 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
IE 11 / Win 7 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DH 2048 FS |
IE 11 / Win 8.1 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DH 2048 FS |
IE 11 / Win Phone 8.1 R | Server closed connection | ||
IE 11 / Win Phone 8.1 Update R | RSA 2048 (SHA256) | TLS 1.2 | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DH 2048 FS |
IE 11 / Win 10 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp384r1 FS |
Edge 15 / Win 10 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Edge 16 / Win 10 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Edge 18 / Win 10 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
Edge 13 / Win Phone 10 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp384r1 FS |
Java 8u161 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Java 11.0.3 | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH secp256r1 FS |
Java 12.0.1 | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH secp256r1 FS |
OpenSSL 1.0.1l R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
OpenSSL 1.0.2s R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
OpenSSL 1.1.0k R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH x25519 FS |
OpenSSL 1.1.1c R | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Safari 6 / iOS 6.0.1 | Server closed connection | ||
Safari 7 / iOS 7.1 R | Server closed connection | ||
Safari 7 / OS X 10.9 R | Server closed connection | ||
Safari 8 / iOS 8.4 R | Server closed connection | ||
Safari 8 / OS X 10.10 R | Server closed connection | ||
Safari 9 / iOS 9 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Safari 9 / OS X 10.11 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Safari 10 / iOS 10 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Safari 10 / OS X 10.12 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Safari 12.1.2 / MacOS 10.14.6 Beta R | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Safari 12.1.1 / iOS 12.3.1 R | – | TLS 1.3 | TLS_AES_256_GCM_SHA384 ECDH x25519 FS |
Apple ATS 9 / iOS 9 R | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
Yahoo Slurp Jan 2015 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp384r1 FS |
YandexBot Jan 2015 | RSA 2048 (SHA256) | TLS 1.2 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDH secp521r1 FS |
# Not simulated clients (Protocol mismatch)
Android 2.3.7 No SNI 2 | Protocol mismatch (not simulated) | ||
Android 4.0.4 | Protocol mismatch (not simulated) | ||
Android 4.1.1 | Protocol mismatch (not simulated) | ||
Android 4.2.2 | Protocol mismatch (not simulated) | ||
Android 4.3 | Protocol mismatch (not simulated) | ||
Baidu Jan 2015 | Protocol mismatch (not simulated) | ||
IE 6 / XP No FS 1 No SNI 2 | Protocol mismatch (not simulated) | ||
IE 7 / Vista | Protocol mismatch (not simulated) | ||
IE 8 / XP No FS 1 No SNI 2 | Protocol mismatch (not simulated) | ||
IE 8-10 / Win 7 R | Protocol mismatch (not simulated) | ||
IE 10 / Win Phone 8.0 | Protocol mismatch (not simulated) | ||
Java 6u45 No SNI 2 | Protocol mismatch (not simulated) | ||
Java 7u25 | Protocol mismatch (not simulated) | ||
OpenSSL 0.9.8y | Protocol mismatch (not simulated) | ||
Safari 5.1.9 / OS X 10.6.8 | Protocol mismatch (not simulated) | ||
Safari 6.0.4 / OS X 10.8.4 R | Protocol mismatch (not simulated) | ||
(1) Clients that do not support Forward Secrecy (FS) are excluded when determining support for it. | |||
(2) No support for virtual SSL hosting (SNI). Connects to the default site if the server uses SNI. | |||
(3) Only first connection attempt simulated. Browsers sometimes retry with a lower protocol version. | |||
(R) Denotes a reference browser or client, with which we expect better effective security. | |||
(All) We use defaults, but some platforms do not use their best protocols and features (e.g., Java 6 & 7, older IE). | |||
(All) Certificate trust is not checked in handshake simulation, we only perform TLS handshake. |
https://scotthelme.co.uk/https-cheat-sheet/
It was a very interesting read on what to use. What I had is what he recommended.
https://www.feistyduck.com/account/login
Has free books available on OpenSSL and Apache2