Deaktivieren von SSLv3, aber weiterhin Unterstützung von SSLv2Hello in Apache

12

Viele SSL-Clients, insbesondere JDK 6, verwenden das SSLv2Hello-Protokoll, um einen Handshake mit dem Server durchzuführen. Die Verwendung dieses Protokolls bedeutet nicht, dass Sie für diese Angelegenheit SSL 2.0 oder 3.0 verwenden. Es ist lediglich ein Handschlag, um zu bestimmen, welches Protokoll verwendet werden soll. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Wenn Sie jedoch in Apache die SSLv3-Unterstützung deaktivieren, wird damit anscheinend die Unterstützung für das SSLv2Hello-Protokoll aufgehoben. Apache Tomcat bietet explizite Unterstützung für SSLv2Hello. Das heißt, Sie können dies aktivieren, SSLv3 jedoch nicht.

Gibt es eine Möglichkeit, dies in Apache zu tun?

[Aktualisieren]

Dies ist meine Protokollkonfiguration:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
Matt Hughes
quelle
However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. Ich verwende Apache 2.2 SSLProtocol all -SSLv2 -SSLv3und der SSL 2-Handshake funktioniert. Welche Konfiguration führen Sie genau, dass Sie ein Problem haben. Die einzige Möglichkeit, den SSL 2-Handshake zu deaktivieren, besteht darin, den FIPS-Modus zu aktivieren.
Chris S
1
Was für ein Schmerz, um mit dieser alten Unterstützung im Jahr 2014 fertig zu werden :(. Es ist Zeit für alle, SSLv2 & SSLv3 zu entschlüsseln und universelle Erweiterungen (zB SNI) zu unterstützen.
Xavier Lucas
2
@XavierLucas Anstatt alle Schritte -SSLv2, -SSLv3 auszuführen, gebe ich die TLS-Protokolle an, die ich unterstütze. Ich verstehe nicht, warum das anders wäre, aber ich werde es testen.
Matt Hughes
@ ChrisS Ich habe beide ausprobiert: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 und alle -SSLv3 -SSLv2. Dies läuft mit Apache 2.4.10. Keine der beiden Konfigurationen scheint den SSL 2-Handshake zuzulassen. Und ich habe den FIPS-Modus nicht berührt; Standardmäßig ist es deaktiviert.
Matt Hughes

Antworten:

7

Anscheinend hat sich mod_ssl im letzten Jahr geändert (ich habe das genaue Commit zur Quelle nicht gefunden, aber das "Problem" gefunden). Die Quelle macht jetzt folgendes:

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

Für diese Einstellung gibt es keine Überschreibung. Das einzige, was Sie tun können, ist die Quelle zu bearbeiten und Ihre eigene Version neu zu kompilieren. Ich habe ein Diff erstellt , um die SSLv2-Handshake-Kompatibilität zu erzwingen, wenn Sie Ihre eigenen kompilieren möchten.

Chris S
quelle
1
Ich kann bestätigen, dass Chris 'Patch hilft - curl (und libcurl-benutzende Programme wie git) können jetzt trotz deaktivierter SSLv3-Funktion wieder mit unserem Server kommunizieren - ohne sslscanSchwachstellen zu melden . Aber der Patch wirkt etwas invasiv und ich möchte Chris bitten, ihn so schnell wie möglich zur Überprüfung an das Apache-Projekt zu senden. Ich werde selbst ein Ticket einreichen, wenn Chris es nicht tut :-) Vielen Dank, Chris!
Mikhail T.
1
Es wäre besser, eine separate Direktive hinzuzufügen, um den Kompatibilitätsmodus zu erzwingen. Wenn ich etwas Freizeit habe, schreibe ich das auf, aber ich denke nicht, dass dieser "Patch" auf lange Sicht eine gute Idee ist.
Chris S
Ja, das scheint zu sein, was Apache-Entwickler in Betracht ziehen. Siehe den [Thread] [1], den ich dort gestartet habe ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/…
Mikhail T.
1

Es stellte sich also heraus, dass dies die ganze Zeit über kein Problem war. Apache akzeptiert SSLv2-Handshake mit einer der oben angegebenen Konfigurationen. Ich wurde durch einen Handschlagfehler in die Irre geführt, als ich dachte, das sei das Problem. Es war wirklich nur ein Konfigurationsproblem, bei dem der Server der CA des Clients nicht vertraute.

Matt Hughes
quelle