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