Wyłączam SSLv3, ale nadal obsługuje SSLv2Hello w Apache

12

Wielu klientów SSL, zwłaszcza JDK 6, używa protokołu SSLv2Hello do uzgadniania z serwerem. Korzystanie z tego protokołu nie oznacza, że ​​korzystasz z SSL 2.0 lub 3.0; jest to tylko uścisk dłoni w celu ustalenia, którego protokołu użyć. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Jednak w Apache, jeśli wyłączysz obsługę SSLv3, najwyraźniej usunie to obsługę protokołu SSLv2Hello. Apache Tomcat ma jawne wsparcie dla SSLv2Hello; to znaczy możesz to włączyć, ale nie włączyć SSLv3.

Czy można to zrobić w Apache?

[Aktualizacja]

Oto konfiguracja mojego protokołu:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
Matt Hughes
źródło
However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. Korzystam z Apache 2.2 SSLProtocol all -SSLv2 -SSLv3i działa uzgadnianie SSL 2. Z jakiej konfiguracji korzystasz dokładnie, że masz problem. Jedyny znany mi sposób na wyłączenie uzgadniania SSL 2 to włączenie trybu FIPS.
Chris S
1
Cóż za ból w obsłudze tego starszego wsparcia w 2014 roku :(. Czas, aby wszyscy nuke SSLv2 i SSLv3 i włączyli obsługę rozszerzeń uniwersalnych (np. SNI).
Xavier Lucas,
2
@XavierLucas Zamiast robić wszystkie -SSLv2, -SSLv3, określam obsługiwane przeze mnie protokoły TLS. Nie rozumiem, dlaczego miałoby być inaczej, ale przetestuję.
Matt Hughes
@ChrisS Próbowałem zarówno: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 i wszystkie -SSLv3 -SSLv2. Działa to z Apache 2.4.10. Żadna konfiguracja nie wydaje się pozwalać na uzgadnianie SSL 2. I nie dotknąłem trybu FIPS; domyślnie jest to wyłączone.
Matt Hughes,

Odpowiedzi:

7

Najwyraźniej mod_ssl zmienił się w ciągu ostatniego roku (nie znalazłem dokładnego zatwierdzenia do źródła, ale znalazłem „problem”). Źródło teraz to robi:

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

Nie ma nadpisania dla tego ustawienia. Jedyne, co możesz zrobić, to edytować źródło, skompilować własną wersję. Stworzyłem diff, aby wymusić kompatybilność SSLv2 Handshake, jeśli chcesz skompilować własny.

Chris S.
źródło
1
Mogę potwierdzić, że łatka Chrisa pomaga - curl (i programy używające libcurl, takie jak git) mogą teraz ponownie rozmawiać z naszym serwerem, pomimo wyłączenia SSLv3 - bez sslscanoznaczania luk w zabezpieczeniach. Ale łatka wydaje się dość inwazyjna i chciałbym poprosić Chrisa o przesłanie jej do projektu Apache w celu jak najszybszego przejrzenia. Sam złożę bilet, jeśli Chris tego nie zrobi :-) Dziękuję bardzo, Chris!
Michaił T.
1
Lepszym pomysłem byłoby dodanie osobnej dyrektywy w celu wymuszenia trybu zgodności. Jeśli mam trochę wolnego czasu, napiszę to, ale nie sądzę, aby ta łatka była dobrym pomysłem na dłuższą metę.
Chris S
Tak, wydaje się, że to właśnie rozważają programiści Apache. Zobacz [wątek] [1] Zacząłem tam ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/...
Mikhail T.
1

Okazuje się, że przez cały czas to nie był problem. Apache zaakceptuje uzgadnianie SSLv2 z dowolną konfiguracją, którą opublikowałem powyżej. Zostałem wprowadzony w błąd przez błąd uzgadniania, myśląc, że to jest problem; tak naprawdę był to tylko problem z konfiguracją, w którym serwer nie ufał urzędowi certyfikacji klienta.

Matt Hughes
źródło