TLS 1.3 avec Nginx et Debian 9

1/52/53/54/55/5 (6 votes, moyenne: 3,50 sur 5)
Loading...
T

Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.


Bonjour à tous,

Maintenant que le draft de TLS 1.3 a été validé dans sa version finale, on va enfin voir comment utiliser TLS 1.3 avec Nginx et Debian 9.

 

Pour plus d’informations

J’ai déjà fait un article en détail sur la compilation de NGINX, nous n’y reviendrons pas ici : https://www.abyssproject.net/2016/11/compiler-nginx-pourquoi-comment/

 

Si vous voulez installer un serveur web complet, vous pouvez commencer par la : https://www.abyssproject.net/2017/06/monter-serveur-web-debian-9/

Prérequis

 

Installation ou mise à jour du NGINX existant

Télécharger et lancez mon script de build, répondez simplement aux deux questions posées au début selon votre situation :

cd /tmp && wget --no-check-certificate https://raw.githubusercontent.com/stylersnico/nginx-openssl-chacha/master/build.sh && sh build.sh
Did you run this script before? (y/n) y
Do you want NAXSI WAF (still experimental)? (y/n) y

 

Maintenant, vous aurez un NGINX compilé avec la dernière version dev de OpenSSL 1.1 et avec le support de TLS 1.3 activé pour les draft 23 + 26 + 27 + 28 + final.

 

Les changements dans la configuration existante

Maintenant, il va falloir faire les modifications dans NGINX pour que vous puissiez utiliser TLS 1.3.

On va voir uniquement ce qui change, si vous voulez une configuration complète, optimisée et sécurisée alors vous pouvez vous tourner vers ma configuration standard : https://github.com/stylersnico/nginx-secure-config

 

Ouvrez votre fichier de configuration NGINX :

nano /etc/nginx/nginx.conf

 

Recherchez d’abord la ligne des protocoles :

ssl_protocols TLSv1.2;

 

Ici, ajoutez la nouvelle version de TLS :

ssl_protocols TLSv1.2 TLSv1.3;

 

Maintenant, il va falloir chercher la ligne qui spécifie les ciphers utilisés :

ssl_ciphers 'EECDH+AESGCM:EECDH+CHACHA20';

 

Ajoutez les ciphers spécifiques au nouveau protocole au début :

ssl_ciphers 'TLS13+AESGCM+AES128:EECDH+AESGCM:EECDH+CHACHA20';

 

Maintenant, redémarrez nginx :

service nginx restart

 

Validation de la bonne configuration

Maintenant, le moyen le plus simple pour valider la bonne marche du fonctionnement de TLS 1.3 c’est de visiter votre site avec un Firefox ou Chrome à jour.

Ouvrez les détails de votre connexion TLS et vous devriez voir que vous utilisez bien le nouveau protocole :

 

Vous pouvez aussi allez sur SSLLABS et valider la bonne marche de votre domaine : https://dev.ssllabs.com/ssltest/analyze.html?d=abyssproject.net&s=195.201.117.190

A propos de l'auteur

Nicolas Simond

Ingénieur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

Subscribe
Notify of
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

12 Commentaires
Plus récents
Plus anciens Populaires
Inline Feedbacks
View all comments
El_Komnerie
El_Komnerie
4 années plus tôt

Petite erreur depuis peu (j’avais pas eu ça en septembre)

can’t find file to patch at input line 486
Perhaps you used the wrong -p or –strip option?
The text leading up to this was:
————————–
|diff –git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
|index 33db1460ab..00c5ee4cff 100644
|— a/ssl/ssl_locl.h
|+++ b/ssl/ssl_locl.h
————————–
File to patch:

Nomad
Nomad
5 années plus tôt

Pour ceux qui ont des erreurs à cause de Nginx 1.15.4, perso j’ai modifié ces deux lignes dans le script (pour rester en 1.15.3):

#latest_nginx=$(curl -L http://nginx.org/en/download.html | egrep -o « nginx\-[0-9.]+\.tar[.a-z]* » | head -n 1)
latest_nginx=$(curl -L http://nginx.org/en/download.html | egrep -o « nginx-1.15.3.tar.gz » | head -n 1)

#(curl -fLRO « http://nginx.org/download/${latest_nginx} » && tar -xaf « ${latest_nginx} ») &
(curl -fLRO « http://nginx.org/download/nginx-1.15.3.tar.gz » && tar -xaf « nginx-1.15.3.tar.gz ») &

Nomad
Nomad
5 années plus tôt

Salut Nicolas,
saurais-tu comment faire pour ajouter cette commande dans ton script build.sh ?

./config –prefix=/usr/src/openssl/.openssl –openssldir=/etc/ssl –libdir=/usr/lib/x86_64-linux-gnu shared zlib-dynamic -Wl,-R,’$(LIBRPATH)’ -Wl,–enable-new-dtags

Merci d’avance

koocotte
koocotte
5 années plus tôt

Je vois beaucoup de problème qui font que je n’exécuterai pas ces instructions dans l’état actuel des choses. Pour être constructif, voici les points qui me pose problème: – Un script lambda récupéré sur le net en désactivant explicitement la vérification du certificat (pourquoi cette désactivation, c’est louche). On n’apprends pas grand chose sans ouvrir le script, et en cas d’erreur (dans une année lorsque certaines ressources auront trop changés ou auront disparus) il sera compliqué d’adapter. – Un script exécuté en root, au revoir la sécurité. – Un script sans le « set -eu », s’il y a une erreur, ça… Voir plus »

Novakin
Reply to  koocotte
5 années plus tôt

Rien ne t’empêche de proposer des changements dans le code du script non ?

Sérieusement cette mentalité dans le libre de critiquer avec un ton condescendant commence littéralement a me gaver.

koocotte
koocotte
Reply to  Novakin
5 années plus tôt

J’ai bien pris le temps d’expliquer les points qui me posent problème et le problème général qu’il y a a exécuter un script tout fait sur internet; si tu trouves le condescendant, je suis désolé; mais ça ne change rien au fond. Et lister les points est justement une façon de faire des remontées et de proposer des changements.

Mathias
5 années plus tôt

Bonjour et merci pour ce billet ! Sinon aujourd’hui (2018-08-30) et probablement depuis quelques jours, Nginx v1.13 (qui supporte TLS1.3) est dans les repos stretch-backports. L’image docker officielle de nginx est aussi au moins en v1.13 et traefik (https://docs.traefik.io/) doit aussi probablement gèrer TLS1.3 car basé sur nginx v1.13 / image docker. Donc la phase de download / compilation devient inutile et c’est tant mieux 😉 On a donc dans l’ordre d’abstraction croissant : 1 – Nginx direct sur un serveur : Debian + stretch-backports + nginx 1.13 + conf adéquate 2 – Nginx dans docker : Debian + docker… Voir plus »

Mathias
Reply to  Nicolas Simond
5 années plus tôt

Au temps pour moi j’aurais mieux fait de tester avant de raconter nimp’ 😉