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

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.