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

8

J'ai un serveur Web Apache 2.4.7 exécutant plusieurs noms de domaine en utilisant une seule adresse IP. En raison de la vulnérabilité de Poodle, j'ai ajouté la SSLCipherSuiteligne suivante . Cela a bien fonctionné pendant un certain temps, 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 les suivants:

<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 voyons que le serveur ne supporte 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?

Kristian
la source

Réponses:

13

La configuration suivante est (ou était) la meilleure configuration selon 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"

Il exclura cependant tous les navigateurs plus anciens (y compris Opera Mini!), Car il manque des suites de chiffrement non PFS et RC4. Vous pouvez ajouter les éléments suivants (avant le devis de clôture, bien sûr) pour activer RC4, y compris une solution de 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 devrait plus être utilisé, en particulier 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 :
juste vérifié, c'est toujours bon pour A +. :) Je pense que cela nécessite un certificat avec SHA256.

Mise à jour d'octobre 2015 :
j'ai récemment trouvé un autre générateur pour les configurations SSL , fourni par Mozilla. Il ordonne les chiffres pour que Chrome ne dise pas que vous utilisez une suite de chiffrement obsolète.

Daniel B
la source
3

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)" 
Kristian
la source
3
 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. Étant donné que 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 votre chaîne de chiffrement, vous verrez que tous les chiffrements disponibles nécessitent TLS1.2.

Par exemple: openssl ciphers -V TLSv1.2.

Steffen Ullrich
la source
0

Voir la directive SSLOpenSSLConfCmd dans la configuration Apache 2.4 .

SSLOpenSSLConfCmd Protocol "-ALL, TLSv1.2"

James B
la source