Ricerca nel sito web

Come abilitare TLS 1.3 in Apache e Nginx


TLS 1.3 è l'ultima versione del protocollo Transport Layer Security (TLS) e si basa sulle specifiche 1.2 esistenti con lo standard IETF appropriato: RFC 8446. Fornisce una maggiore sicurezza e miglioramenti delle prestazioni più elevati rispetto ai suoi predecessori.

In questo articolo, ti mostreremo una guida passo passo per ottenere un certificato TLS valido e abilitare l'ultima versione del protocollo TLS 1.3 sul tuo dominio ospitato su Apache o Server web Nginx.

Requisiti:

  • Apache versione 2.4.37 o successiva.
  • Nginx versione 1.13.0 o successiva.
  • OpenSSL versione 1.1.1 o successiva.
  • Un nome di dominio valido con record DNS configurati correttamente.
  • Un certificato TLS valido.

Installa il certificato TLS da Let's Encrypt

Per ottenere un certificato SSL gratuito da Let's Encrypt, è necessario installare il client Acme.sh e anche alcuni pacchetti necessari sul sistema Linux, come mostrato.


apt install -y socat git  [On Debian/Ubuntu]
dnf install -y socat git  [On RHEL/CentOS/Fedora]
mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --home /etc/letsencrypt --accountemail [email 
cd ~
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

NOTA: sostituisci example.com nel comando precedente con il tuo vero nome di dominio.

Una volta installato il certificato SSL, puoi procedere ulteriormente per abilitare TLS 1.3 sul tuo dominio come spiegato di seguito.

Abilita TLS 1.3 su Nginx

Come ho menzionato nei requisiti sopra, TLS 1.3 è supportato a partire dalla versione Nginx 1.13. Se stai utilizzando la versione precedente di Nginx, devi prima eseguire l'aggiornamento alla versione più recente.


apt install nginx
yum install nginx

Controlla la versione Nginx e la versione OpenSSL rispetto alla quale è stato compilato Nginx (assicurati che la versione nginx sia almeno 1.14 e openssl versione 1.1.1).


nginx -V
Uscita del campione

nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 
built with OpenSSL 1.1.1 FIPS  11 Sep 2018
TLS SNI support enabled
....

Ora avvia, abilita e verifica l'installazione di nginx.


systemctl start nginx.service
systemctl enable nginx.service
systemctl status nginx.service

Ora apri il file di configurazione /etc/nginx/conf.d/example.com.conf di nginx vhost utilizzando il tuo editor preferito.


vi /etc/nginx/conf.d/example.com.conf

e individua la direttiva ssl_protocols e aggiungi TLSv1.3 alla fine della riga come mostrato di seguito


server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
  ssl_prefer_server_ciphers on;
}

Infine, verifica la configurazione e ricarica Nginx.


nginx -t
systemctl reload nginx.service

Abilita TLS 1.3 in Apache

A partire da Apache 2.4.37, puoi sfruttare TLS 1.3. Se utilizzi la versione precedente di Apache, devi prima eseguire l'aggiornamento alla versione più recente.


apt install apache2
yum install httpd

Una volta installato, puoi verificare la versione di Apache e OpenSSL rispetto alla quale Apache è stato compilato.


httpd -V
openssl version

Ora avvia, abilita e verifica l'installazione di nginx.


-------------- On Debian/Ubuntu -------------- 
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service

-------------- On RHEL/CentOS/Fedora --------------
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service

Ora apri il file di configurazione dell'host virtuale Apache utilizzando il tuo editor preferito.


vi /etc/httpd/conf.d/vhost.conf
OR
vi /etc/apache2/apache2.conf

e individua la direttiva ssl_protocols e aggiungi TLSv1.3 alla fine della riga come mostrato di seguito.


<VirtualHost *:443>
SSLEngine On

RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

ssl_protocols TLSv1.2 TLSv1.3
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

     ServerAdmin [email 
     ServerName www.example.com
     ServerAlias example.com
    #DocumentRoot /data/httpd/htdocs/example.com/
    DocumentRoot /data/httpd/htdocs/example_hueman/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/log/httpd/example.com/httpserror.log
  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>

Infine, verifica la configurazione e ricarica Apache.


-------------- On Debian/Ubuntu -------------- 
apache2 -t
systemctl reload apache2.service

-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service

Verificare che il sito utilizzi TLS 1.3

Dopo aver effettuato la configurazione tramite un server web, puoi verificare che il tuo sito esegua l'handshaking sul protocollo TLS 1.3 utilizzando gli strumenti di sviluppo del browser Chrome sulla versione Chrome 70+.

È tutto. Hai abilitato con successo il protocollo TLS 1.3 sul tuo dominio ospitato su server web Apache o Nginx. Se hai domande su questo articolo, non esitare a chiedere nella sezione commenti qui sotto.