SSL a reçu une clé Diffie-Hellman éphémère faible : comment résoudre ce problème ?
Dans certains cas, par exemple lorsque le certificat SSL n’est pas correctement installé sur le serveur, le message d’avertissement suivant apparaît dans le navigateur : une erreur s’est produite lors de la connexion à www.site.com. SSL a reçu une clé Diffie-Hellman éphémère faible dans le message d’établissement de liaison « Exchange keys server ». (Code d’erreur : ssl_error_weak_server_ephemeral_dh_key).
La page que vous essayez d’ouvrir ne peut pas être affichée car l’authenticité des données reçues n’a pas pu être vérifiée. Veuillez contacter le propriétaire du site web pour l’informer de ce problème.
Ce problème est dû au fait que le serveur essaie d’établir une connexion sécurisée en utilisant une clé de chiffrement faible (moins de 1024 bits). La taille recommandée de la clé de chiffrement est de 2048 bits. Le moyen le plus simple de générer ce type de clé de chiffrement améliorée consiste à utiliser OpenSSL :
Openssl dhparam -out dhparams.pem 2048
Pour résoudre le problème avec différents serveurs, suivez les étapes ci-dessous :
Spécifiez des jeux de chiffrement sécurisés Définissez les paramètres appropriés pour l’algorithme Diffie-Hellman
Solution pour Apache :
Les paramètres SSL peuvent être définis globalement dans le fichier httpd.conf ou dans des hôtes virtuels spécifiques.
Jeux de chiffrement
Désactivez la prise en charge de SSLv2 et SSLv3 et activez la prise en charge de TLS en autorisant/désactivant explicitement certains chiffrements dans l’ordre indiqué :
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
Paramètres Diffie-Hellman :
Dans les versions récentes d’Apache (2.4.8 et supérieures), ainsi qu’OpenSSL 1.0.2 et supérieures, vous pouvez spécifier directement un fichier avec les paramètres Diffie-Hellman :
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Si vous utilisez Apache avec LibreSSL ou travaillez avec des versions d’Apache 2.4.7 ou OpenSSL 0.9.8a ou supérieures, vous pouvez ajouter les paramètres Diffie-Hellman générés précédemment à la fin de votre fichier de certificat.
Réinitialisez la configuration :
Sudo service apache2 reload
La solution pour Nginx
Dans le bloc serveur de la configuration du site (/etc/nginx/sites-enabled/default), ajoutez ce qui suit :
Jeux de chiffrement :
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
Paramètres Diffie-Hellman
Ssl_dhparam {path to dhparams.pem}
Rechargez la configuration :
Sudo nginx -s reload
Microsoft IIS
1. Ouvrez l’éditeur d’objets de stratégie de groupe (exécutez gpedit.msc dans la ligne de commande).
2. Accédez à « Configuration ordinateur », « Modèles d’administration », « Réseau », puis cliquez sur « Paramètres de configuration SSL ».
3. Dans la section « Paramètres de configuration SSL », ouvrez le paramètre « Ordre des suites de chiffrement SSL ».
4. Définissez des chiffrements stables. La liste des chiffrements peut être consultée sur le site web de Microsoft ou sur la page Mozilla.
Lighttpd
Des modifications sont apportées à /etc/lighttpd/lighttpd.conf.
Jeux de chiffrement :
ssl.cipher-list = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA "
Paramètres Diffie-Hellman
Ssl.dh-file = "{path to dhparams.pem}"
Réinitialisez la configuration :
Sudo service lighttpd restart
Apache Tomcat
Dans le fichier server.xml (pour JSSE)
Jeux de chiffrement :
<Connector
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA"
/>
Remarque : pour utiliser les chiffrements AES 256 bits, vous devez installer JCE Unlimited Strength Jurisdiction Policy Files. Vous pouvez le trouver en cliquant sur le lien suivant.
Postfix SMTP
Les deux paramètres doivent être spécifiés dans /etc/postfix/main.cf.
Jeux de chiffrement :
smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
Paramètres Diffie-Hellman
smtpd_tls_dh1024_param_file = ${config_directory}/dhparams.pem
Réinitialisez la configuration :
sudo postfix reload
Sendmail
Des modifications peuvent être apportées dans la section LOCAL_CONFIG du fichier /etc/mail/sendmail.mc
Jeux de chiffrement :
O CipherList=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Paramètres Diffie-Hellman
O DHParameters={path to dhparams.pem}
Réinitialisez la configuration :
sudo service sendmail restart
Dovecot
Des modifications peuvent être apportées à /etc/dovecot.conf
Jeux de chiffrement :
ssl_cipher_list=ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_prefer_server_ciphers = yes (Dovecot 2.2.6 ou supérieur)
Paramètres Diffie-Hellman :
#regenerates every week
ssl_dh_parameters_length = 2048
Réinitialisez la configuration :
sudo doveadm reload
HAProxy
Des modifications sont apportées à la section globale du fichier config.
Jeux de chiffrement :
ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Paramètres Diffie-Hellman :
Ajouter au bas du fichier .crt avec le paramètre Diffie-Hellman généré avec OpenSSL.
Remarque : malgré l’option tune.ssl.default-dh-param, qui vous permet de spécifier la taille maximale des nombres premiers utilisés pour DHE, placer des paramètres arbitraires dans votre fichier de certificat écrasera ces valeurs.
Réinitialisez la configuration :
sudo haproxy -f haproxy.cfg -p $(</var/run/haproxy-private.pid) -st $(</var/run/haproxy-private.pid)
Amazon Elastic Load Balancing
Le dernier ensemble de paramètres SSL prédéfinis (2015-05) utilise des chiffrements ECDHE, et non DHE, qui résistent à l’attaque LogJam. Les détails peuvent être trouvés dans la documentation.
OpenSSH
Le protocole SSH est protégé des attaques LogJam, lorsqu’un attaquant peut faire basculer une connexion vers un chiffrement plus faible. Cependant, de nombreuses implémentations SSH, y compris OpenSSH, utilisent des nombres premiers, par exemple Oakley Group 2 1024 bits. Il existe toutefois plusieurs façons de résoudre ce problème. La première méthode, et la plus simple, consiste à amener les clients à utiliser l’algorithme Diffie-Hellman sur des courbes elliptiques. En particulier, la courbe 25519. Vous pouvez le faire en définissant des algorithmes d’échange de clés :
KexAlgorithms curve25519-sha256@libssh.org
Si vous souhaitez continuer à prendre en charge l’algorithme Diffie-Hellman non elliptique, vous devez désactiver la prise en charge du Groupe 1 en supprimant diffie-hellman-group1-sha1. Vous pouvez laisser diffie-hellman-group14-sha1, qui utilise des nombres premiers de 2038 bits.
Vous pouvez également générer de nouveaux groupes Diffie-Hellman :
ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates
Vous devrez ensuite installer le moduli-2048 dans votre fichier système moduli. Dans Debian/Ubuntu, il se trouve dans /etc/ssh/moduli. SSH sélectionne (de manière aléatoire) les groupes de ce fichier. Vous devez donc ajouter les nouveaux groupes générés au fichier moduli en supprimant les anciens.
Si vous avez des questions ou des préoccupations à ce sujet, n’hésitez pas à contacter l’équipe d’assistance de LeaderTelecom en utilisant les coordonnées indiquées sur ce site web.