Comment activer TLS 1.3 dans Apache et Nginx
TLS 1.3 est la dernière version du protocole Transport Layer Security (TLS) et est basé sur les spécifications 1.2 existantes avec la norme IETF appropriée : RFC 8446. Il offre une sécurité renforcée et des performances améliorées par rapport à ses prédécesseurs.
Dans cet article, nous allons vous montrer un guide étape par étape pour obtenir un certificat TLS valide et activer la dernière version du protocole TLS 1.3 sur votre domaine hébergé sur Apache ou Serveurs Web Nginx.
Exigences:
- Apache version 2.4.37 ou supérieure.
- Nginx version 1.13.0 ou supérieure.
- OpenSSL version 1.1.1 ou supérieure.
- Un nom de domaine valide avec des enregistrements DNS correctement configurés.
- Un certificat TLS valide.
Installer le certificat TLS à partir de Let's Encrypt
Pour obtenir un certificat SSL gratuit auprès de Let's Encrypt, vous devez installer le client Acme.sh ainsi que quelques packages nécessaires sur le système Linux, comme indiqué.
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
REMARQUE : remplacez example.com
dans la commande ci-dessus par votre vrai nom de domaine.
Une fois le certificat SSL installé, vous pouvez continuer pour activer TLS 1.3 sur votre domaine comme expliqué ci-dessous.
Activer TLS 1.3 sur Nginx
Comme je l'ai mentionné dans les exigences ci-dessus, TLS 1.3 est pris en charge à partir de la version Nginx 1.13. Si vous utilisez l'ancienne version de Nginx, vous devez d'abord effectuer une mise à niveau vers la dernière version.
apt install nginx
yum install nginx
Vérifiez la version Nginx et la version OpenSSL avec laquelle Nginx a été compilé (assurez-vous que la version nginx est au moins 1.14 et openssl version 1.1.1).
nginx -V
Exemple de sortie
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
....
Maintenant, démarrez, activez et vérifiez l'installation de nginx.
systemctl start nginx.service
systemctl enable nginx.service
systemctl status nginx.service
Ouvrez maintenant le fichier de configuration nginx vhost /etc/nginx/conf.d/example.com.conf
à l'aide de votre éditeur préféré.
vi /etc/nginx/conf.d/example.com.conf
et localisez la directive ssl_protocols
et ajoutez TLSv1.3 à la fin de la ligne comme indiqué ci-dessous
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;
}
Enfin, vérifiez la configuration et rechargez Nginx.
nginx -t
systemctl reload nginx.service
Activer TLS 1.3 dans Apache
À partir d'Apache 2.4.37, vous pouvez profiter de TLS 1.3. Si vous utilisez l'ancienne version d'Apache, vous devez d'abord effectuer une mise à niveau vers la dernière version.
apt install apache2
yum install httpd
Une fois installé, vous pouvez vérifier la version d'Apache et d'OpenSSL avec laquelle Apache a été compilé.
httpd -V
openssl version
Maintenant, démarrez, activez et vérifiez l'installation de 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
Ouvrez maintenant le fichier de configuration de l'hôte virtuel Apache à l'aide de votre éditeur préféré.
vi /etc/httpd/conf.d/vhost.conf
OR
vi /etc/apache2/apache2.conf
et localisez la directive ssl_protocols
et ajoutez TLSv1.3 à la fin de la ligne comme indiqué ci-dessous.
<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>
Enfin, vérifiez la configuration et rechargez Apache.
-------------- On Debian/Ubuntu --------------
apache2 -t
systemctl reload apache2.service
-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service
Vérifier que le site utilise TLS 1.3
Une fois la configuration effectuée via un serveur Web, vous pouvez vérifier que votre site établit une liaison via le protocole TLS 1.3 à l'aide des outils de développement du navigateur Chrome sur la version Chrome 70+.
C'est tout. Vous avez activé avec succès le protocole TLS 1.3 sur votre domaine hébergé sur des serveurs Web Apache ou Nginx. Si vous avez des questions sur cet article, n'hésitez pas à les poser dans la section commentaires ci-dessous.