web-dev-qa-db-fra.com

Paramètres SSLCipherSuite dans Apache pour la prise en charge de TLS 1.0, 1.1 et 1.2

J'ai un serveur Web Apache 2.4.7 qui exécute plusieurs noms de domaine en utilisant une seule adresse IP. En raison de la vulnérabilité Poodle, j'ai ajouté la ligne SSLCipherSuite suivante. Cela a fonctionné correctement pendant un moment, mais les utilisateurs signalent des problèmes d’accès à la page dans Firefox. Demander aux utilisateurs de changer de navigateur n'est malheureusement pas une option. Je dois donc modifier les paramètres pour prendre en charge TLS 1.0, 1.1 et 1.2.

Les paramètres actuels sont:

<VirtualHost ZYX.XYZ.org:443>
DocumentRoot /var/www/ZYX.XYZ/www
ServerName ZYX.XYZ.org

<Directory "/var/www/ZYX.XYZ/">
  allow from all
  Options -Indexes
</Directory>

SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
SSLCertificateFile /etc/Apache2/ssl/XYZ.org.crt
SSLCertificateKeyFile /etc/Apache2/ssl/XYZ.org.key
SSLCACertificateFile /etc/Apache2/ssl/Gd_bundle-g2-g1.crt
</VirtualHost>

Si nous regardons le test de Qualys , nous constatons que le serveur ne prend en charge que TLS 1.2.

Quels seraient les paramètres appropriés pour activer TLS 1.0, TLS 1.1 et TLS 1.2, afin que le site puisse prendre en charge les navigateurs plus anciens et également maintenir un niveau de sécurité décent?

8
Kristian

La configuration suivante est (ou était) la meilleure configuration selon les SSLLabs:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA"

Cependant, tous les anciens navigateurs (y compris Opera Mini!) Seront exclus, car il manque de suites de chiffrement non PFS et RC4. Vous pouvez ajouter ce qui suit (bien sûr avant le dernier cours) pour activer RC4, y compris un repli (dernière entrée) sur RC4 sans PFS:

:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:RC4-SHA

Vous devez encourager les utilisateurs à mettre à niveau dès que possible. RC4 est cassé et ne doit plus être utilisé, surtout sans PFS.

Pour obtenir de meilleures notes, envoyez également un en-tête HSTS (pour que cela fonctionne, vous devez activer mod_header):

Header always set Strict-Transport-Security "max-age=63072000;"

Cette configuration ne fonctionnera pas pour Apache <2.2.26, car elle ne prend pas en charge la cryptographie à courbe elliptique.

Mise à jour :
Je viens de vérifier, c’est toujours bon pour A +. :) Je crois cependant que cela nécessite un certificat avec SHA256.

Mise à jour octobre 2015 :
J'ai récemment trouvé un autre générateur de configurations SSL , fourni par Mozilla. Il ordonne les chiffrements de sorte que Chrome ne dise pas que vous utilisez une suite de chiffrement déconseillée.

11
Daniel B

J'ai trouvé cette recommandation sur Cipherli.st :

SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off 
SSLUseStapling on 
SSLStaplingCache "shmcb:logs/stapling-cache(150000)" 
3
Kristian
 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-SSLv3:-EXP:!kEDH
                                                           ^^^^^^^^

La désactivation des suites de chiffrement SSLv3 désactive toutes les suites de chiffrement introduites avec SSL3.0. Comme ces suites de chiffrement sont également utilisées avec les versions SSL ultérieures (TLS1.0 +) et que de nouvelles suites de chiffrement ont été principalement introduites avec TLS1.2, ce paramètre rend TLS1.0 et TLS1.1 indisponibles en raison de l'absence de chiffrement partagé. Ainsi, le protocole est effectivement limité à TLS1.2.

Si vous appelez openssl ciphers -V <cipher> avec la chaîne de chiffrement que vous verriez, tous les chiffrements disponibles requièrent TLS1.2.

Par exemple: openssl ciphers -V TLSv1.2.

3
Steffen Ullrich

Voir la directive SSLOpenSSLConfCmd dans la config Apache 2.4 .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

1
James B