66 votes

Comment activer le secret de transmission parfait par défaut sur Apache?

À la suite d’événements récents, j’ai reconsidéré ma configuration Apache. Actuellement, la configuration de mon site Apache ressemble à ceci:

  <IfModule mod_ssl.c>
    <VirtualHost *:80>
            ServerName mydomain.com
            ServerAlias www.mydomain.com
            Redirect permanent / https://mydomain.com
    </VirtualHost>

    <VirtualHost *:443>
            ServerAdmin webmaster@localhost
            ServerName mydomain.com

            DocumentRoot /var/www-wordpress
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www-wordpress>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride FileInfo
                    Order allow,deny
                    allow from all
            </Directory>

            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>

            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn

            CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
            SSLCertificateFile    /etc/ssl/certs/mydomain.com.crt
            SSLCertificateKeyFile /etc/ssl/private/mydomain.com.key
            SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                    SSLOptions +StdEnvVars
            </Directory>

            BrowserMatch "MSIE [2-6]" \
                    nokeepalive ssl-unclean-shutdown \
                    downgrade-1.0 force-response-1.0
            BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
 

Que dois-je faire pour prendre en charge le secret parfaitement transmis? Comment puis-je activer le secret de transmission parfait SSL par défaut? Comment pourrais-je l'appliquer?

93voto

Lorrin Points 964

Comment à ce sujet:

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

Notez l'ajout de l'-SSLv3 drapeau de désactiver SSLv3. C'est ajouté pour protéger contre le CANICHE attaque.

Cette préfèrent perfect forward secrecy, mais pas au détriment de l'être vulnérables à la BÊTE attaque. Depuis Apache manque un moyen de configurer le chiffrement de préférence basée sur la version du protocole, j'ai faux, il en se référant à des algorithmes de chiffrement disponible uniquement dans les nouveaux protocoles. Plus précisément, l'AES est disponible uniquement avec le hachage SHA1 jusqu'à TLSv1.2. Ainsi, la liste commence avec la TLSv1.2 Diffie-Hellman algorithmes de chiffrement, puis RC4 (d'abord avec de l'éphémère, de la DH, puis sans), et enfin une BÊTE de personnes vulnérables à l'option AES. Excluant pas d'authentification / chiffrement faible / faible hachage à la fin, c'est juste pour une bonne hygiène et pourrait être omis, car aucun de ces algorithmes ont été introduites. Si la performance est un problème, utilisez EECDH seulement et omettre EDH.

En combinaison avec Apache 2.2 (donc pas de EECDH @Bruno dit), par https://www.ssllabs.com/ssltest/analyze.html, cela permet d'obtenir PFS pour iOS Safari. IE et Firefox sont TLSv1.0 afin qu'ils obtiennent la RC4 pour éviter la BÊTE. (Hélas, il n'y a pas une telle chose comme EDH RC4, sans EECDH, vous abandonnez PFS). C'est, je crois, le mieux qu'on pouvait espérer avec ces navigateurs sur Apache 2.2. Chrome est le seul que mal servi, puisqu'il prend en charge TLSv1.1 et pourrait utiliser EDH AES sans être vulnérables à la BÊTE. Au lieu de cela, il devient RC4, RSA, comme Firefox et IE. La mise à niveau d'Apache pour permettre EECDH RC4 devriez obtenir PFS pour Firefox, IE et Chrome.

Mise à jour 2013-11-09:

J'ai trouvé d'autres recommandations sur le web. Ils mettent moins l'accent sur la BÊTE de protection (peut-être sage; la BÊTE est surtout atténué côté client maintenant) et plus l'accent sur perfect forward secrecy). À des degrés divers, ils ont aussi des préférences plus marquées pour GCM et une plus grande réticence à accepter RC4.

De note particulière sont, je pense, les recommandations suivantes:

Personnellement, je vais aller avec Mozilla OpSec. Leur raisonnement est bien expliqué sur leur page. De la note, ils préfèrent AES128 sur AES256. Dans leurs mots: "[AES128] offre une bonne sécurité, est vraiment très rapide, et semble être plus résistant aux attaques temporelles."

À noter Ivan Ristic et Geoffroy Gramaize recommandation est que SSLv3 est désactivé. Je pense que la plupart du temps cela vient rompre IE6, même si certains liés à la sécurité des différences entre SSLv3 et TLS v1.0 sont mentionnés sur Wikipédia.

Aussi avant que je n'ai pas parlé de la CRIMINALITÉ et de la VIOLATION. Pour se protéger contre le CRIME, désactiver la compression SSL. Ce qui est inclus dans les exemples liés. Protégé contre l'intrusion, vous devez désactiver la compression au niveau HTTP. Pour Apache 2.4, il suffit de faire cette fois à l'échelle mondiale:

<Location />
  SetEnvIfExpr "%{HTTPS} == 'on'" no-gzip
</Location>

Pour les anciennes versions de Apache, placez ce dans chaque VirtualHost où SSLEngine est sur:

<Location />
    SetEnv no-gzip
</Location>

Mise à jour 2014-10-14: La Mozilla OpSec guide est maintenant divisé en recommandations pour les vieux/intermédiaire/moderne de compatibilité. Avec les paramètres de niveau intermédiaire ou moderne, vous vous retrouvez avec SSLv3 désactivé. Qui permettra de protéger contre le CANICHE attaque.

6voto

Benoit Points 51

À partir de ma propre compréhension, vous devez activer SSLHonorCipherOrder et préfixer SSLCipherSuite avec ECDHE et DHE chiffres openssl ciphers -v

De mon /etc/apache2/mods-available/ssl.conf:

SSLHonorCipherOrder on
SSLCipherSuite ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:DHE-RSA-CAMELLIA128-SHA:AES128-SHA:RC4-SHA:HIGH:!aNULL:!MD5:!ADH

Pour tester votre site web, vous pouvez utiliser: https://www.ssllabs.com/ssltest

Remarque: Eliptic Courbe DHE ne semble fonctionner avec Apache 2.3.3 ou supérieur (voir la source et de Bruno commentaire).

3voto

Bruno Points 47560

Les suites de chiffrement qui fournissent Perfect Forward Secrecy) sont celles qui utilisent un éphémère forme de l'échange de clés Diffie-Hellman. Leur inconvénient est leur frais généraux, qui peut être améliorée par l'utilisation de la courbe elliptique variantes (voir Vincent Bernat du blog.)

Les suites de chiffrement dans Apache Httpd (si vous vous trouvez à l'aide de mod_ssl compilé avec OpenSSL) sont configurés à l'aide d' SSLCipherSuite, qui prend une liste que vous souhaitez voir lors de l'utilisation de l' openssl ciphers commande. Si vous regardez la OpenSSL homme page, vous trouverez kEDH est ce que vous cherchez. (Vous pouvez également la liste de suites de chiffrement individuellement).

2voto

huuu Points 11

Essayez ce code dans votre ssl.conf:

SSLProtocol +TLSv1.2 +TLSv1.1 +TLSv1
SSLCompression off
SSLHonorCipherOrder on
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:AES256-GCM-SHA384:AES256-SHA256:CAMELLIA256-SHA:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:CAMELLIA128-SHA

Par la voie,

Conseil d'Expert: Le (1/n-1) split astuce est implémenté dans Firefox depuis un certain temps. Ainsi, vous pouvez le désactiver en toute sécurité RC4 sur Firefox dans la configuration avancée menu. Pour ce faire, saisissez "about:config" dans la barre d'adresse, puis la recherche pour " rc4 "et de basculer toutes les valeurs "faux". Si vous rencontrez des problèmes de connexion, d'activer / désactiver les paramètres de vrai.

https://cc.dcsec.uni-hannover.de/

Ces sites web vous donne les informations sur le protocole SSL, des suites de chiffrement de votre navigateur prend en charge pour la sécurisation des connexions HTTPS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X