Turn off TLS 1.0 and 1.1
Why it matters
TLS 1.0 and 1.1 are deprecated and no current browser uses them, but leaving them on lets attackers and old tools negotiate weaker encryption. Turning them off costs almost nothing today.
Staged change. Do this in stages and check each one before the next, so a mistake does not break your site or your mail.
The fix
- Stage 1, check who still uses the old versions. In the web server log, record the protocol per request ($ssl_protocol in nginx, %{SSL_PROTOCOL}x in Apache). Everything current speaks TLS 1.2, so only very old systems such as Windows XP or old embedded devices will show up.
- Stage 2, allow only TLS 1.2 and 1.3 in the web server, CDN or load balancer.
- Test with the commands below that TLS 1.2 still works and TLS 1.1 is refused. Roll back by restoring the previous setting if a client you need breaks.
- If TLS is terminated by a proxy or managed platform, change the setting there, not on the origin behind it.
bash
openssl s_client -connect example.com:443 -servername example.com -tls1_2 </dev/null 2>&1 | grep -E "Protocol|Cipher" # "alert protocol version" or "New, (NONE)" = TLS 1.1 refused (good); "New, TLSv1.x, Cipher is ..." = still enabled # "no protocols available" = your local OpenSSL cannot test it openssl s_client -connect example.com:443 -servername example.com -tls1_1 -cipher 'DEFAULT:@SECLEVEL=0' </dev/null 2>&1 | grep -E "^New|alert|no protocols"
The examples use example.com. Replace it with your own domain.
Related
- Reported by the TLS protocol versions check
- Enable TLS 1.2 and TLS 1.3
- Enable TLS 1.3
Scan your domain to see whether this applies to you.