Juste un article lié à l’actualité (Poodle &co) et sur les mesures à prendre sur nos serveurs SSL/TLS.
SHA-1 : datant de 1996, encore considéré comme fiable, cette fonction de hash, largement utilisée pour signer des certificats, et plein d’autres choses, va être dépréciée. Google et Microsoft ont en effet annoncé qu’ils allaient progressivement refuser les certificats signés avec SHA-1 dans leurs navigateurs respectifs et recommandent d’utiliser SHA256.
=>c’est une bonne nouvelle pour notre sécurité, non pas parce que SHA256 est plus fiable que SHA-1, mais parce que ça va obliger de nombreuses autorités de certifications à renouveler leurs certificats d’autorités et les administrateurs à faire de même pour leurs certificats serveurs.
Je vous laisse chercher pourquoi ce surcroit de travail devrait être une bonne chose …
Poodle : datant de 1996 lui aussi, SSLv3 vient probablement de casser sa pipe, une faille protocolaire permet de déchiffrer tout ou partie d’une connexion HTTPS. Comme la faille concerne le protocole et pas une implémentation, la correction est assez simple, il suffit de désactiver la prise en charge de SSLv3.
C’est une très bonne nouvelle, on va enfin pouvoir se débarrasser d’Internet Explorer 6 (ce dernier ne prend pas en charge le TLS).
Vivement qu’on trouve une faille dans TLS1 afin de faire sauter les versions 7 et 8, voir même 9 et 10 (puisque que TLS 1.1 et 1.2 y sont désactivés par défaut)
Certificats en SHA256
Google et Microsoft ont annoncé qu’ils allaient progressivement refuser les certificats signés avec SHA1 dans leurs navigateurs respectifs et recommandent d’utiliser SHA256.
Les certificats déjà publiés ne devraient pour la plupart pas être concernés, mais si vous avez un certificat à générer à partir de maintenant, il vaut mieux directement le signer en SHA256.
Vérifiez bien que votre autorité de certification a fait de même avec ses chaines de certifications!
Par défaut, OpenSSL utilise SHA-1 pour générer une demande de certificat (CSR), pour utiliser SHA256 il suffit d’ajouter default_md = sha256 dans la section appropriée du fichier de configuration ([ ca ] et/ou [ req ] selon l’usage), ou d’ajouter -sha256 dans la ligne de commande.
Poodle
Pas besoin de détailler, il est temps de débrancher les ancêtres.
La suite indique comment faire pour quelques logiciels serveur de qualité :
Nginx
Configuration avec une bonne compatibilité :
keepalive_timeout 70; ssl_session_cache shared:ssl_session_cache:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'AES256+EECDH:AES256+EDH:AES128+EECDH:DES-CBC3-SHA';
Le dernier cipher permet la compatibilité avec IE 8 sur XP, n’hésitez pas à le supprimer.
Pour plus de sécurité on peut générer une clef de session plus forte :
openssl dhparam -out dh-2048.pem 2048
On l’utilise avec la directive :
ssl_dhparam /etc/nginx/dh-2048.pem;
Si le site est uniquement en HTTPS, on peut l’indiquer aux navigateurs compatibles via l’entête HSTS , ainsi ils ne tenteront plus (pendant la durée indiquée) d’accéder à votre site en HTTP :
add_header Strict-Transport-Security "max-age=15984000";
Apache2
Configuration avec une bonne compatibilité :
SSLCompression Off SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite 'AES256+EECDH:AES256+EDH:AES128+EECDH:DES-CBC3-SHA'
Pour l’HSTS :
Header set Strict-Transport-Security "max-age=15984000"
Postfix
smtpd_tls_protocols=!SSLv2,!SSLv3 smtp_tls_protocols=!SSLv2,!SSLv3
Dovecot
ssl_protocols = !SSLv2 !SSLv3