TLS v1.3 op nginx en Ubuntu

TLS v1.3 op nginx en Ubuntu

TLS versie 1.* versies zijn al langer niet veilig meer. TLS v1.2 kan nog, maar beter is het om over te schakelen naar TLS versie 1.3. Deze laatste versie wordt door het NCSC (National Cyber Security Center) aangeraden om te gebruiken. Zie ook het document de ICT-beveiligingsrichtlijnen voor Transport Layer Security (TLS)

ICT-beveiligingsrichtlijnen voor Transport Layer Security (TLS)
Deze richtlijnen zijn bedoeld als advies bij het inkopen, opstellen en beoordelen van configuraties voor het Transport Layer Security-protocol (TLS). Een veilige TLS-configuratie is belangrijk voor het beveiligen van verbindingen op internet.

Zelf gebruik ik nginx als reverse proxy server omdat deze eenvoudig in het gebruik en te configuren is. Ik moest alleen toch nog wel even zoeken waarom ik geen TLS v1.3 kon gebruiken, maar uiteindleijk bleek dit niet zo lastig te zijn.

Het server platform wat ik gebruik is Ubuntu 20.04 LTS op een raspberry pi. nginx is TLS v1.3 gereed. Met het volgende commando kun je de versie van nginx achterhalen:

pi4:$ nginx -V

nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 1.1.1f  31 Mar 2020
TLS SNI support enabled

nginx versies groter dan 1.14 + OpenSSL 1.1.1  hebben de mogelijkheid om  TLS v1.3 te configureren. Het is dus niet nodig om nginx en OpenSSL zelf te compileren.

Stap 1 - /etc/nginx.nginx.conf
De volgende twee regels moeten aanwezig zijn onder het stukje SSL.
Tip: Verwijder gelijk het gedeelte 'TLSv1 TLSv1.1' uit de regel 'ssl_protocols om de beveiliging wat op te schroeven.

##
# SSL Settings
##
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

Stap 2 - /etc/nginx/sites-availble/<site config>
Ik heb het volgende nog toegevoegd aan de site-config.

ssl_certificate <path naar certificaat>;
ssl_certificate_key <path naar certificaat>;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:E
CDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-
SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SH
A384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;

Daarna is het een kwestie van nginx herstarten.

Er zijn verschillende manieren om je site te testen. Een uitgebreide test op je site kun je hier uitvoeren. Echt een aanrader.

SSL Server Test (Powered by Qualys SSL Labs)
A comprehensive free SSL test for your public web servers.