TLS 1.3 est une version du protocole TLS (Transport Layer Security) qui a été publiée en 2018 en tant que norme proposée dans la RFC 8446 . Il offre des améliorations de sécurité et de performances par rapport à ses prédécesseurs.
Ce guide vous montrera comment activer TLS 1.3 à l'aide du serveur Web Nginx sur FreeBSD 12.
Exigences
- Instance Vultr Cloud Compute (VC2) exécutant FreeBSD 12.
- Un nom de domaine valide et des enregistrements
A
/ AAAA
/ CNAME
DNS correctement configurés pour votre domaine.
- Un certificat TLS valide. Nous en obtiendrons un de Let's Encrypt.
- Version Nginx
1.13.0
ou supérieure.
- Version OpenSSL
1.1.1
ou supérieure.
Avant que tu commences
Vérifiez la version de FreeBSD.
uname -ro
# FreeBSD 12.0-RELEASE
Assurez-vous que votre système FreeBSD est à jour.
freebsd-update fetch install
pkg update && pkg upgrade -y
Installez les packages nécessaires s'ils ne sont pas présents sur votre système.
pkg install -y sudo vim unzip wget bash socat git
Créez un nouveau compte utilisateur avec votre nom d'utilisateur préféré (nous utiliserons 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!
Exécutez la visudo
commande et décommentez la %wheel ALL=(ALL) ALL
ligne pour permettre aux membres du wheel
groupe d'exécuter n'importe quelle commande.
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
Maintenant, passez à votre nouvel utilisateur avec su
.
su - johndoe
REMARQUE: remplacez johndoe
par votre nom d'utilisateur.
Configurez le fuseau horaire.
sudo tzsetup
Installez le client acme.sh et obtenez le certificat TLS de Let's Encrypt
Installez acme.sh
.
sudo pkg install -y acme.sh
Vérifiez la version.
acme.sh --version
# v2.7.9
Obtenez des certificats RSA et ECDSA pour votre domaine.
# 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
REMARQUE: remplacez example.com
les commandes par votre nom de domaine.
Créez des répertoires pour stocker vos certificats et clés. Nous utiliserons /etc/letsencrypt
.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Installez et copiez les certificats dans le /etc/letsencrypt
répertoire.
# 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
Après avoir exécuté les commandes ci-dessus, vos certificats et clés seront dans les emplacements suivants:
RSA
: /etc/letsencrypt/example.com
ECC/ECDSA
: /etc/letsencrypt/example.com_ecc
Installer Nginx
Nginx a ajouté la prise en charge de TLS 1.3 dans la version 1.13.0. Le système FreeBSD 12 est livré avec Nginx et OpenSSL qui prennent en charge TLS 1.3, il n'est donc pas nécessaire de créer une version personnalisée.
Téléchargez et installez la dernière version principale de Nginx via le pkg
gestionnaire de packages.
sudo pkg install -y nginx-devel
Vérifiez la version.
nginx -v
# nginx version: nginx/1.15.8
Vérifiez la version d'OpenSSL avec laquelle Nginx a été compilé.
nginx -V
# built with OpenSSL 1.1.1a-freebsd 20 Nov 2018
Démarrez et activez Nginx.
sudo sysrc nginx_enable=yes
sudo service nginx start
Maintenant que nous avons installé Nginx avec succès, nous sommes prêts à le configurer avec la configuration appropriée pour commencer à utiliser TLS 1.3 sur notre serveur.
Exécutez la sudo vim /usr/local/etc/nginx/example.com.conf
commande et remplissez le fichier avec la configuration suivante.
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;
}
Enregistrez le fichier et quittez avec :+ W+ Q.
Maintenant, nous devons inclure example.com.conf
dans le nginx.conf
fichier principal .
Exécutez sudo vim /usr/local/etc/nginx/nginx.conf
et ajoutez la ligne suivante au http {}
bloc.
include example.com.conf;
Remarquez le nouveau TLSv1.3
paramètre de la ssl_protocols
directive. Ce paramètre n'est nécessaire que pour activer TLS 1.3 sur le serveur Nginx.
Vérifiez la configuration.
sudo nginx -t
Recharger Nginx.
sudo service nginx reload
Pour vérifier TLS 1.3, vous pouvez utiliser les outils de développement du navigateur ou le service SSL Labs. Les captures d'écran ci-dessous montrent l'onglet de sécurité de Chrome.
Vous avez réussi à activer TLS 1.3 dans Nginx sur votre serveur FreeBSD. La version finale de TLS 1.3 a été définie en août 2018, il n'y a donc pas de meilleur moment pour commencer à adopter cette nouvelle technologie.