Отключение SSLv3, но все еще поддержка SSLv2Hello в Apache

12

Многие клиенты SSL, в частности JDK 6, используют протокол SSLv2Hello для установления связи с сервером. Использование этого протокола не означает, что вы используете SSL 2.0 или 3.0 в этом отношении; это просто рукопожатие, чтобы определить, какой протокол использовать. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Однако в Apache, если вы отключите поддержку SSLv3, это, очевидно, удалит поддержку протокола SSLv2Hello. Apache Tomcat имеет явную поддержку SSLv2Hello; то есть вы можете включить это, но не включить SSLv3.

Есть ли способ сделать это в Apache?

[Обновить]

Это мой протокол конфигурации:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
Мэтт Хьюз
источник
However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. Я использую Apache 2.2 с поддержкой SSLProtocol all -SSLv2 -SSLv3SSL 2. Какая конфигурация у вас работает именно так, что у вас проблемы. Единственный известный мне способ отключения рукопожатия SSL 2 - включить режим FIPS.
Крис С
1
Какая боль справиться с этой унаследованной поддержкой в ​​2014 году :(. Пришло время всем взломать SSLv2 и SSLv3 и сделать поддержку универсальных расширений (например, SNI).
Ксавьер Лукас
2
@XavierLucas Вместо того, чтобы делать все -SSLv2, -SSLv3, я указываю протоколы TLS, которые я поддерживаю. Я не понимаю, почему это было бы иначе, но я проверю.
Мэтт Хьюз
@ChrisS Я попробовал оба: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 и все -SSLv3 -SSLv2. Это работает с Apache 2.4.10. Похоже, что ни одна из конфигураций не позволяет использовать рукопожатие SSL 2. И я не коснулся режима FIPS; по умолчанию это отключено.
Мэтт Хьюз

Ответы:

7

Очевидно, что mod_ssl изменился за последний год или около того (я не нашел точную фиксацию источника, но нашел «проблему»). Источник теперь делает это:

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

Там нет переопределения для этого параметра. Единственное, что вы можете сделать, это отредактировать исходный код, перекомпилировать свою собственную версию. Я создал diff для обеспечения совместимости SSLv2 Handshake, если вы хотите скомпилировать свой собственный.

Крис С
источник
1
Я могу подтвердить, что патч Криса помогает - curl (и программы, использующие libcurl, такие как git) теперь могут снова общаться с нашим сервером, несмотря на то, что SSLv3 был отключен - без sslscanпометки каких-либо уязвимостей. Но патч кажется несколько инвазивным, и я хотел бы попросить Криса отправить его в проект Apache для обзора как можно скорее. Я сам запишу билет, если Крис не сделает :-) Большое спасибо, Крис!
Михаил Т.
1
Было бы лучше добавить отдельную директиву в режим принудительной совместимости. Если у меня будет свободное время, я напишу об этом, но я не думаю, что этот «патч» - хорошая идея в долгосрочной перспективе.
Крис С
Да, похоже, именно это и думают разработчики Apache. Смотрите [ветку] [1], с которой я начал там ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/…
Михаил Т.
1

Таким образом, оказывается, что это не было проблемой все время. Apache примет рукопожатие SSLv2 с любой из конфигураций, которые я опубликовал выше. Я был введен в заблуждение ошибкой рукопожатия, полагая, что это проблема; на самом деле это была просто проблема конфигурации, когда сервер не доверял CA клиента.

Мэтт Хьюз
источник