GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come abilitare facilmente TLS 1.3 in Nginx su Ubuntu 20.04, 18.04, 16.04

In un articolo precedente, ho spiegato i passaggi per compilare il codice sorgente Nginx con OpenSSL 1.1.1 per abilitare il protocollo TLS 1.3, che è stato ufficialmente rilasciato nell'agosto 2018. In questo tutorial, ti mostrerò un modo più semplice per abilitare TLS 1.3 su Ubuntu 20.04, 18.04 e 16.04

TLS 1.3 offre prestazioni e sicurezza migliorate

Per quanto riguarda le prestazioni, TLS 1.2 necessita di due round trip per stabilire una connessione HTTPS. Con TLS 1.3 è richiesto un solo viaggio di andata e ritorno. TLS 1.3 supporta anche la modalità di andata e ritorno zero (ripresa della sessione 0-RTT), consentendo ai client che si sono precedentemente collegati al tuo sito Web di inviare una richiesta HTTP sul primo messaggio al server. Questo fa una grande differenza per gli utenti su reti mobili o in località lontane.

In termini di sicurezza, TLS 1.3 ha rimosso il supporto per le vecchie suite di crittografia, responsabile di exploit come l'attacco ROBOT. Questa, ovviamente, è una spiegazione troppo semplificata. CloudFlare ha una buona spiegazione dettagliata di TLS 1.3.

Requisiti per abilitare TLS 1.3

Ci sono due requisiti quando si tratta di abilitare TLS 1.3 con Nginx.

  1. La tua versione di Nginx deve supportare TLS 1.3. Ciò significa Nginx 1.13 o versioni successive.
  2. Nginx deve essere compilato con OpenSSL 1.1.1 o versioni successive.

Ubuntu 18.04 e 20.04 viene fornito con OpenSSL 1.1.1

OpenSSL 1.1.1 è incluso nel repository Ubuntu 18.10 e 20.04 e il pacchetto Nginx del repository Ubuntu 18.10/20.04 è creato con OpenSSL 1.1.1.

Quando Ubuntu 18.04 è uscito per la prima volta, viene fornito solo con OpenSSL 1.0.2. Tuttavia, OpenSSL 1.1.1 viene eseguito il backport su Ubuntu 18.04.3.

Se stai ancora utilizzando Ubuntu 18.04.2, esegui semplicemente i seguenti comandi per eseguire l'aggiornamento a 18.04.3.

sudo apt update 
sudo apt upgrade

Installa l'ultima versione di Nginx creata con OpenSSL 1.1.1 su Ubuntu 16.04

Il pacchetto Nginx del repository Ubuntu 16.04 non è creato con OpenSSL 1.1.1. Puoi compilare manualmente Nginx con OpenSSL 1.1.1, ma ci vuole più tempo e devi ricompilare quando esce una nuova versione di Nginx. Fortunatamente, possiamo installare Nginx da un PPA (archivio dei pacchetti personali) di Ondřej Surý, che è uno sviluppatore Debian e una figura importante nella comunità DNS. Mantiene molti pacchetti per il repository Debian, inclusi Apache, BIND, MariaDB, PHP ecc. È anche uno dei manutentori del PPA ufficiale di certbot. Quindi ho fiducia nel suo PPA e lo uso sui miei server.

Se in precedenza hai aggiunto un altro repository Nginx (come nginx.org), disabilitalo. Ad esempio, ho un altro repository Nginx definito in /etc/apt/sources.list.d/nginx-repo.list file. Commento semplicemente tutte le righe in quel file per disabilitarlo.

Per aggiungere Ondřej Surý Nginx PPA su Ubuntu, esegui il comando seguente.

sudo add-apt-repository ppa:ondrej/nginx

sudo apt update

Quindi rimuovi il tuo pacchetto Nginx esistente. (I tuoi file di configurazione Nginx non verranno rimossi.)

sudo apt remove nginx

Se usi iRedMail e Nginx, esegui sudo apt remove nginx-full per rimuovere Nginx.

E installa Nginx da PPA.

sudo apt install nginx

Quando ti viene chiesto se desideri installare una nuova versione del file di configurazione, scegli N . Il tuo plug-in certbot Nginx potrebbe essere rimosso insieme a Nginx, quindi installalo di nuovo.

sudo apt install python3-certbot-nginx

Ora controlla la versione di Nginx.

sudo nginx -V

Dovresti vedere che Nginx è costruito con OpenSSL 1.1.1.

nginx version: nginx/1.14.1
built with OpenSSL 1.1.1 11 Sep 2018 (running with OpenSSL 1.1.0g 2 Nov 2017)
TLS SNI support enabled

Questo PPA fornisce anche OpenSSL 1.1.1 per Ubuntu 16.04. Se il tuo Nginx su Ubuntu 16.04 è ancora in esecuzione con OpenSSL 1.1.0, devi aggiornare il tuo pacchetto OpenSSL.

sudo apt upgrade

Tieni presente che se stai utilizzando Google Compute Engine, vedrai il seguente messaggio durante l'esecuzione del comando precedente.

The following packages have been kept back:
     libssl1.1 openssl

Questo perché il pacchetto OpenSSL 1.1.1 è in conflitto con alcuni pacchetti del motore di calcolo di Google. Dovrai eseguire il comando seguente per aggiornare OpenSSL.

sudo apt dist-upgrade

Abilita TLS 1.3 in Nginx Virtual Host su Ubuntu 20.04, 18.04 e 16.04

Una volta che hai Nginx con OpenSSL 1.1.1, apri il tuo file host virtuale Nginx.

sudo nano /etc/nginx/conf.d/site.conf

o

sudo nano /etc/nginx/sites-enabled/site.conf

Per abilitare TLS 1.3, aggiungi semplicemente TLSv1.3 a ssl_protocols direttiva nel blocco del server SSL.

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

Se stai usando il certificato Let's Encrypt, la tua configurazione SSL può essere impostata in /etc/letsencrypt/options-ssl-nginx.conf file. A proposito, certbot per impostazione predefinita abilita TLSv1 , che non è sicuro, puoi rimuoverlo. Se stai usando iRedMail e Nginx, devi modificare le configurazioni SSL in /etc/nginx/templates/ssl.tmpl file.

Salva e chiudi il file. Quindi riavvia Nginx per rendere effettive le modifiche.

sudo systemctl restart nginx

Verifica della versione TLS nel browser Web

Utilizzando Firefox 63 o versioni successive, ricarica la pagina Web, fai clic con il pulsante destro del mouse su un'area vuota e seleziona View Page Info nel menu contestuale. Vai a Security scheda e vedrai che TLS 1.3 è in uso.

Utilizzando Google Chrome 70 o versioni successive, ricarica una pagina web sul tuo sito. Quindi premi Ctrl+Alt+I per aprire Strumenti per sviluppatori. Vai a Security scheda e vedrai che viene utilizzato TLS 1.3.

TLSv1.3 viene utilizzato tra Cloudflare e il tuo server di origine?

Sì. Cloudflare supporta TLS 1.3 sul server front-end e utilizza anche TLSv1.3 durante la connessione al server di origine. Per verificare quale versione di TLS viene utilizzata, puoi creare un formato di registro personalizzato in /etc/nginx/nginx.conf file.

sudo nano /etc/nginx/nginx.conf

Aggiungi il seguente testo in http contesto.

log_format combined_ssl '$remote_addr - $remote_user [$time_local] '
                  '$ssl_protocol/$ssl_cipher '
                  '"$request" $status $body_bytes_sent '
                  '"$http_referer" "$http_user_agent"';

Salva e chiudi il file. Quindi aggiungi un access_log direttiva nel tuo server SSL contesto. Il registro è in combined_ssl formato.

access_log /var/log/nginx/your-site.access.log combined_ssl;

Salva e chiudi il file. Quindi ricarica Nginx. Nel file di registro degli accessi vedrai qualcosa come di seguito, che indica che viene utilizzato TLS 1.3.

172.68.132.115 - - [25/Feb/2020:16:07:26 +0800] TLSv1.3/TLS_AES_256_GCM_SHA384 "GET / HTTP/1.1"

Passaggio successivo

Spero che questo tutorial ti abbia aiutato ad abilitare TLS 1.3 in Nginx su Ubuntu 20.04, Ubuntu 18.04 e Ubuntu 16.04. Potresti anche voler configurare il firewall dell'applicazione Web ModSecurity per proteggere il tuo sito Web dall'hacking.

  • Come configurare ModSecurity con Nginx su Debian/Ubuntu

Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere ulteriori suggerimenti e trucchi. Abbi cura di 🙂


Ubuntu
  1. Come abilitare SSH su Ubuntu 18.04

  2. Come abilitare il desktop remoto di Ubuntu

  3. Come controllare lo stato di NGINX su Ubuntu

  4. Come abilitare la luce notturna su Ubuntu 17.10

  5. Ubuntu 20.04 – Come abilitare Hwe?

Come configurare facilmente un DNS su TLS Resolver con Nginx su Ubuntu

Come abilitare TLS 1.3 in Nginx su Ubuntu 18.04 e 16.04

Come abilitare Fai clic per ridurre a icona su Ubuntu

Come abilitare il server SSH su Ubuntu 22.04

Come abilitare TLS 1.3 su Apache e Nginx

Come installare Nginx su Ubuntu 15.04