Renforcer la sécurité du protocole HTTPS sur Nginx (SSL/TLS)

//Renforcer la sécurité du protocole HTTPS sur Nginx (SSL/TLS)
1/52/53/54/55/5 (3 votes, moyenne: 4,67 sur 5)
Loading...

Renforcer la sécurité du protocole HTTPS sur Nginx (SSL/TLS)

Bonjour à tous,

 

J’ai un poil bidouillé le serveur Nginx pour obtenir le Graal de la note A+ sur le test Qualys SSL.

sslreporttap

Admirez

 

Pour avoir ce résultat, ça ne vous demandera pas trop de travail (vu que j’ai déjà tout fait) donc c’est plutôt sympa 🙂

 

Configuration des paramètres DHE :

Nous sommes en 2015, j’utilise la dernière version security d’OpenSSL sur Debian 8 avec Nginx 1.8 et force est de constater que les paramètres par défaut de OpenSSL utilisent toujours des clés de 1024 bits.

Le problème, c’est que tous les certificats utilisent du SHA256 + 2048 bits maintenant et que les clés de 1024 bits seront automatiquement considérées comme faibles par le test de Qualys.

Pour mettre fin à cette hérésie, connectez vous en root et lancez la commande suivante :

cd /etc/ssl/certs && openssl dhparam -out dhparam.pem 2048

 

Configuration de Nginx :

Ouvrez le fichier de configuration principal de Nginx avec la commande suivante :

nano /etc/nginx/nginx.conf

 

Vous devriez trouver une section qui ressemble à ceci dans la balise http :

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers xxxxxxxxxxxxxxxxxxx;

##
# Logging Settings
##

 

Remplacez-la par ceci :

##
# SSL Settings
##

ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains";

##
# Logging Settings
##

 

Et pour les explications (parce que c’est toujours sympa de comprendre ce que l’on fait), cadeau !

  • La ligne ssl_prefer_server_ciphers indique que le serveur doit utiliser ses suites de chiffrements et non celle données par le navigateur du client.
  • La ligne ssl_protocols indique les protocoles activés sur le serveur. Ici, toutes les versions de TLS.
  • La ligne ssl_dhparam indique le chemin vers la configuration de OpenSSL. Nous utilisons maintenant des clés de 2048 bits.
  • La ligne ssl_ciphers indique la suite de ciphers que le serveur doit utiliser ainsi que ceux qu’il refuse explicitement.
  • Pour la dernière ligne, add_header Strict-Transport-Security j’en ai déjà parlé ici 🙂

 

Redémarrez Nginx et testez votre site 🙂

service nginx restart

ou

systemctl restart nginx
By |2015-10-06T10:31:21+00:0011 mai 2015|GNU/Linux|3 Comments

About the Author:

Diplômé d'un BTS SIO SISR et travaillant actuellement en Suisse, je suis passionné par tout ce qui touche à l'informatique et la musique hard rock et métal depuis ma plus tendre enfance. Je suis le créateur et l'unique rédacteur d'Abyss Project, ce blog qui me sert de bloc-notes public en quelque sorte.

3
Poster un Commentaire

avatar
2 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
LoscilloNicolas SimondQwaser Recent comment authors

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

Plus récents Plus anciens Populaires
Loscillo
Invité
Loscillo

Bon tutoriel pour améliorer la protection de son site web.

Cependant, même si on génère ici un groupe Diffie-Hellman de 2048 bits, je pense qu’il vaut mieux passer sur des courbes elliptiques (ECDHE). DHE à des faiblesses (comme Logjam) et ECDHE est bien supporté désormais (sauf Android 2.3.7, IE sur XP et Java 6 si on regarde le test de SSL Labs).

De plus, sur le tutoriel pour mettre un certificat SSL sous nginx, vous utilisiez des ciphers avec ECDSA avec une clé RSA, ce qui est inutile, il est donc possible de simplifier cette partie 🙂

Qwaser
Invité

Honnêtement je ne regrette pas de te suivre ! Toujours un plaisir de voir comment je peux améliorer mon serveur 😀 Ton tutoriel fonctionne impeccable, je suis maintenant moi aussi en A+ : https://www.ssllabs.com/ssltest/analyze.html?d=qwaser.fr