I maintain several websites that use Certbot. The Qualys SSL Labs SSL Server Test has historically graded them as A+, but recently the grade has changed to B:
"This server supports TLS 1.0 and TLS 1.1. Grade capped to B. "
I could disable those protocols. For Apache, it would seem to require changing the SSLProtocol line in /etc/letsencrypt/options-ssl-apache.conf. But that file warns: “If you modify this file manually, Certbot will be unable to automatically provide future security updates.”
So, how can you disable TLS 1.0 and TLS 1.1, but still get configuration updates from Certbot? Will Certbot disable these obsolete protocols in the near future? Any advice would be appreciated.
Thanks, I tried this, except for Nginx instead of Apache. (Sorry to confuse the issue, but it's probably the same problem for both Nginx and Apache.) I first changed /etc/nginx/nginx.conf, but found that I could not disable TLS 1.0 and TLS 1.1 unless I also edited /etc/letsencrypt/options-ssl-nginx.conf. That would presumably break Certbot updates because, as options-ssl-nginx.conf says: "If you modify this file manually, Certbot will be unable to automatically provide future security updates.”
It seems either that comment in the .conf file is wrong or Certbot updates will be broken.
Relying on certbot for (any) future security updates is not an ideal best practice.
SSL Labs can better show you when/where your systems are out of compliance; from there you can and should take steps to ensure your systems are up to your minimum security standards.
And for those that do absolutely nothing to secure and maintain their systems, certbot may eventually steer them to a safer security configuration.
[sadly unlike say driving a car, there is no test, nor license required, to operate a web server]
Makes sense. Some of the Certbot-using websites I maintain, I don't administrate the systems so I have to request changes to web server configuration. Unfortunately, the administrators can be derelict about security maintenance, so I worry breaking the Certbot automatic updates for a one-off security improvement will just make security worse in the long run. I think I'll just hope that Certbot removes TLS 1.0 and TLS 1.1 from the default configurations eventually. It'd be nice if there were some way to make the change to remove TLS 1.0 and TLS 1.1 without breaking future Certbot configuration updates.
Not sure what file it might reside on with nginx, but the syntax is:
ssl_protocols TLSv1.2;
ssl_ciphers ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL:!MD5:!DSS:!SHA1
EDIT:
The SSLProtocol line in Apache can be shortened to: SSLProtocol -ALL +TLSv1.2 +TLSv1.3
If you want to be explicit. I keep my template the other way so I don’t have to worry about that particular configuration in the future when things progress to later TLS versions.
Ubuntu Server 18.04 LTS, Apache 2.4, Certbot 0.31.0
Things I’ve tried:
I tried to change SSLProtocol in the file /etc/apache2/mods-available/ssl.conf and restart the server, but it didn’t work.
I searched for SSLProtocol in the main Apache configuration file /etc/apache2/apache2.conf, but it isn’t there.
I tried to set SSLProtocol on all enabled virtual host files in /etc/apache2/sites-available/*, but the SSL Labs test still reported that my server had support for TLSv1.0 and TLSv1.1.
It only worked when I changed it in /etc/letsencrypt/options-ssl-apache.conf.
I’m okay with that, actually. I always apply updates myself anyway. But does anyone know how else could I successfully change SSLProtocol in a similar setup?
Apache files are read top to bottom. The ssl.conf file should take the global setting, but it has to be OUTSIDE the default VirtualHost block. In your vhost config files, remove the line:
Include /etc/letsencrypt/options-ssl-apache.conf
I have my own SSL settings globally set in my ssl.conf file.
It's not only based on apache/nginx version. It's also based on OpenSSL version. Needs to be 1.1.1+. It's not available on standard repos for RHEL/CentOS7 or Ubuntu 18.04. Not sure where it starts being available on other distros standard repos. I have CentOS8, and it's available on the standard repos.
I'm sure you can download it & do a manual install, but it's not easy for the average user.
Also on the positive side of the things to consider list:
enabling TLSv1.3 on web servers won’t break anything when OpenSSL doesn’t support it yet.
[that’s just “pre-configuration” for the day it does - you could even “allow” TLSv1.4 or TLSv2.0]