TLS 1.3 è una versione del protocollo TLS (Transport Layer Security) che è stato pubblicato nel 2018 come standard proposto in RFC 8446 . Offre sicurezza e miglioramenti delle prestazioni rispetto ai suoi predecessori.
Questa guida mostrerà come abilitare TLS 1.3 usando il web server Nginx su FreeBSD 12.
Requisiti
- Istanza di Vultr Cloud Compute (VC2) che esegue FreeBSD 12.
- Un nome di dominio valido e record DNS
A/ AAAA/ correttamente configurati CNAMEper il tuo dominio.
- Un certificato TLS valido. Ne avremo uno da Let's Encrypt.
- Versione Nginx
1.13.0o successiva.
- Versione OpenSSL
1.1.1o successiva.
Prima di iniziare
Controlla la versione di FreeBSD.
uname -ro
# FreeBSD 12.0-RELEASE
Assicurati che il tuo sistema FreeBSD sia aggiornato.
freebsd-update fetch install
pkg update && pkg upgrade -y
Installa i pacchetti necessari se non sono presenti sul tuo sistema.
pkg install -y sudo vim unzip wget bash socat git
Crea un nuovo account utente con il tuo nome utente preferito (useremo johndoe).
adduser
# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!
Esegui il visudocomando e decommenta la %wheel ALL=(ALL) ALLriga per consentire ai membri del wheelgruppo di eseguire qualsiasi comando.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Ora passa al nuovo utente creato con su.
su - johndoe
NOTA: sostituisci johndoecon il tuo nome utente.
Imposta il fuso orario.
sudo tzsetup
Installa il client acme.sh e ottieni il certificato TLS da Let's Encrypt
Installa acme.sh.
sudo pkg install -y acme.sh
Controlla la versione
acme.sh --version
# v2.7.9
Ottieni i certificati RSA ed ECDSA per il tuo dominio.
# RSA
sudo acme.sh --issue --standalone -d example.com --ocsp-must-staple --keylength 2048
# ECC/ECDSA
sudo acme.sh --issue --standalone -d example.com --ocsp-must-staple --keylength ec-256
NOTA: Sostituisci example.comnei comandi con il tuo nome di dominio.
Crea directory per archiviare certificati e chiavi. Useremo /etc/letsencrypt.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Installa e copia i certificati nella /etc/letsencryptdirectory.
# RSA
sudo acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem
# ECC/ECDSA
sudo acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem
Dopo aver eseguito i comandi sopra, i certificati e le chiavi saranno nei seguenti percorsi:
RSA: /etc/letsencrypt/example.com
ECC/ECDSA: /etc/letsencrypt/example.com_ecc
Installa Nginx
Nginx ha aggiunto il supporto per TLS 1.3 nella versione 1.13.0. Il sistema FreeBSD 12 viene fornito con Nginx e OpenSSL che supportano TLS 1.3 immediatamente, quindi non è necessario creare una versione personalizzata.
Scarica e installa l'ultima versione mainline di Nginx tramite il pkggestore pacchetti.
sudo pkg install -y nginx-devel
Controlla la versione
nginx -v
# nginx version: nginx/1.15.8
Controlla la versione OpenSSL in base alla quale è stato compilato Nginx.
nginx -V
# built with OpenSSL 1.1.1a-freebsd 20 Nov 2018
Avvia e abilita Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
Ora che Nginx è stato installato correttamente, siamo pronti a configurarlo con la configurazione corretta per iniziare a utilizzare TLS 1.3 sul nostro server.
Eseguire il sudo vim /usr/local/etc/nginx/example.com.confcomando e popolare il file con la seguente configurazione.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.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;
}
Salvare il file e uscire con :+ W+ Q.
Ora dobbiamo includere example.com.confnel nginx.conffile principale .
Esegui sudo vim /usr/local/etc/nginx/nginx.confe aggiungi la seguente riga al http {}blocco.
include example.com.conf;
Si noti il nuovo TLSv1.3parametro della ssl_protocolsdirettiva. Questo parametro è necessario solo per abilitare TLS 1.3 sul server Nginx.
Controlla la configurazione.
sudo nginx -t
Ricarica Nginx.
sudo service nginx reload
Per verificare TLS 1.3, è possibile utilizzare gli strumenti di sviluppo del browser o il servizio SSL Labs. Le schermate seguenti mostrano la scheda di sicurezza di Chrome.

![Come abilitare TLS 1.3 in Nginx su FreeBSD 12 Come abilitare TLS 1.3 in Nginx su FreeBSD 12]()
Hai abilitato con successo TLS 1.3 in Nginx sul tuo server FreeBSD. La versione finale di TLS 1.3 è stata definita nell'agosto 2018, quindi non c'è momento migliore per iniziare ad adottare questa nuova tecnologia.