Désactivation de SSLv3 mais toujours prise en charge de SSLv2Hello dans Apache

12

De nombreux clients SSL, notamment JDK 6, utilisent le protocole SSLv2Hello pour établir une liaison avec le serveur. L'utilisation de ce protocole ne signifie pas pour autant que vous utilisez SSL 2.0 ou 3.0; il est simplement une poignée de main afin de déterminer lequel le protocole à utiliser. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Cependant, dans Apache, si vous désactivez la prise en charge SSLv3, cela supprime apparemment la prise en charge du protocole SSLv2Hello. Apache Tomcat a un support explicite pour SSLv2Hello; c'est-à-dire que vous pouvez l'activer, mais pas activer SSLv3.

Existe-t-il un moyen de le faire dans Apache?

[Mise à jour]

Voici ma configuration de protocole:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
Matt Hughes
la source
However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. J'utilise Apache 2.2 avec SSLProtocol all -SSLv2 -SSLv3et la prise de contact SSL 2 fonctionne. Quelle configuration exécutez-vous exactement que vous rencontrez un problème. La seule façon que je connaisse de désactiver la prise de contact SSL 2 est d'activer le mode FIPS.
Chris S
1
Quelle peine de gérer ce support hérité en 2014 :(. Il est temps que tout le monde nuke SSLv2 & SSLv3 et prenne en charge les extensions universelles (par exemple SNI).
Xavier Lucas
2
@XavierLucas Au lieu de faire tout -SSLv2, -SSLv3, je spécifie les protocoles TLS que je supporte. Je ne vois pas pourquoi ce serait différent, mais je vais tester.
Matt Hughes
@ChrisS J'ai essayé les deux: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 et tous -SSLv3 -SSLv2. Cela fonctionne avec Apache 2.4.10. Aucune configuration ne semble autoriser la prise de contact SSL 2. Et je n'ai pas touché au mode FIPS; la valeur par défaut est qu'il est désactivé.
Matt Hughes

Réponses:

7

Apparemment, mod_ssl a changé au cours de la dernière année environ (je n'ai pas trouvé le commit exact de la source, mais j'ai trouvé le "problème"). La source fait maintenant ceci:

If SSLProtocol only includes only one Protocol:
    Handshake = That Protocol's Handshake Only
Else
    Handshake = SSLv2 Handshake

Il n'y a pas de priorité pour ce paramètre. La seule chose que vous pourriez faire est de modifier la source, de recompiler votre propre version. J'ai créé un diff pour forcer la compatibilité de la prise de contact SSLv2 si vous souhaitez compiler le vôtre.

Chris S
la source
1
Je peux confirmer que le correctif de Chris aide - curl (et les programmes utilisant libcurl tels que git) peuvent maintenant parler à nouveau à notre serveur, bien que SSLv3 ait été désactivé - sans sslscansignaler aucune vulnérabilité. Mais le correctif semble quelque peu invasif et je voudrais demander à Chris de le soumettre au projet Apache pour examen dès que possible. Je déposerai moi-même un ticket, si Chris ne le fait pas :-) Merci beaucoup, Chris!
Mikhail T.
1
Ce serait une meilleure idée d'ajouter une directive distincte pour forcer le mode de compatibilité. Si j'ai du temps libre, je vais l'écrire, mais je ne pense pas que ce "patch" soit une bonne idée à long terme.
Chris S
Oui, cela semble être ce que les développeurs d'Apache envisagent. Voir le [fil] [1] J'ai commencé là-bas ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/…
Mikhail T.
1

Il s'avère donc que ce n'était pas un problème depuis le début. Apache acceptera la prise de contact SSLv2 avec l'une des configurations que j'ai postées ci-dessus. J'ai été induit en erreur par une erreur de poignée de main en pensant que c'était le problème; c'était vraiment juste un problème de configuration où le serveur ne faisait pas confiance à l'autorité de certification du client.

Matt Hughes
la source