Recherche de site Web

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.