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 Apache 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 Apache
2.4.36
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 acme.sh
client et obtenez un 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 les example.com
commandes par votre nom de domaine.
Créez des répertoires judicieux 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 /etc/letsencrypt
.
# 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 Apache
Apache a ajouté la prise en charge de TLS 1.3 dans la version 2.4.36. Le système FreeBSD 12 est livré avec Apache 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 branche 2.4 d'Apache via le pkg
gestionnaire de paquets.
sudo pkg install -y apache24
Vérifiez la version.
httpd -v
# Server version: Apache/2.4.38 (FreeBSD)
Démarrez et activez Apache.
sudo sysrc apache24_enable="yes"
sudo service apache24 start
Maintenant que nous avons installé Apache avec succès, nous sommes prêts à le configurer pour commencer à utiliser TLS 1.3 sur notre serveur.
REMARQUE: dans FreeBSD, le mod_ssl
module est activé par défaut dans le package et le port
Exécutez sudo vim /usr/local/etc/apache24/httpd.conf
et incluez le module SSL en supprimant les commentaires LoadModule ssl_module libexec/apache24/mod_ssl.so
.
#LoadModule ssl_module libexec/apache24/mod_ssl.so
Exécutez sudo vim /usr/local/etc/apache24/Includes/example.com.conf
et remplissez le fichier avec la configuration de base suivante.
Listen 443
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
# RSA
SSLCertificateFile "/etc/letsencrypt/example.com/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/example.com/private.key"
# ECC
SSLCertificateFile "/etc/letsencrypt/example.com_ecc/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/example.com_ecc/private.key"
</VirtualHost>
Enregistrez le fichier et quittez avec :+ W+ Q.
Vérifiez la configuration.
sudo service apache24 configtest
Rechargez Apache.
sudo service apache24 reload
Ouvrez votre site via le protocole HTTPS dans votre navigateur Web. 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 avec TLS 1.3 en action.
Vous avez réussi à activer TLS 1.3 dans Apache 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.