Deshabilitar SSLv3 pero aún admite SSLv2Hello en Apache

12

Muchos clientes SSL, en particular JDK 6, utilizan el protocolo SSLv2Hello para el protocolo de enlace con el servidor. El uso de este protocolo no significa que esté utilizando SSL 2.0 o 3.0; es simplemente un apretón de manos para determinar qué protocolo usar. [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

Sin embargo, en Apache, si deshabilita el soporte SSLv3, esto aparentemente elimina el soporte para el protocolo SSLv2Hello. Apache Tomcat tiene soporte explícito para SSLv2Hello; es decir, puede habilitar eso, pero no habilitar SSLv3.

¿Hay alguna forma de hacer esto en Apache?

[Actualizar]

Esta es mi configuración de protocolo:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3
Matt Hughes
fuente
However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. Estoy ejecutando Apache 2.2 con SSLProtocol all -SSLv2 -SSLv3y el protocolo de enlace SSL 2 funciona. ¿Qué configuración está ejecutando exactamente para tener un problema? La única forma en que sé deshabilitar SSL 2 Handshake es habilitar el modo FIPS.
Chris S
1
Qué dolor manejar ese soporte heredado en 2014 :(. Es hora de que todos usen SSLv2 y SSLv3 y hagan extensiones universales (por ejemplo, SNI).
Xavier Lucas
2
@XavierLucas En lugar de hacer todo -SSLv2, -SSLv3, especifico los protocolos TLS que sí apoyo. No veo por qué eso sería diferente, pero lo probaré.
Matt Hughes
@ChrisS Intenté ambos: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 y todos -SSLv3 -SSLv2. Esto se está ejecutando con Apache 2.4.10. Ninguna configuración parece permitir el protocolo de enlace SSL 2. Y no he tocado el modo FIPS; el valor predeterminado es que está deshabilitado.
Matt Hughes

Respuestas:

7

Aparentemente mod_ssl ha cambiado en el último año más o menos (no he encontrado la confirmación exacta de la fuente, pero encontré el "problema"). La fuente ahora hace esto:

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

No hay anulación para esta configuración. Lo único que puede hacer es editar la fuente, recompilar su propia versión. He creado un diff para forzar la compatibilidad con SSLv2 Handshake si desea compilar el suyo.

Chris S
fuente
1
Puedo confirmar que el parche de Chris ayuda: curl (y los programas que usan libcurl como git) ahora pueden volver a hablar con nuestro servidor, a pesar de que SSLv3 se ha deshabilitado, sin sslscanmarcar ninguna vulnerabilidad. Pero el parche parece algo invasivo y me gustaría pedirle a Chris que lo envíe al proyecto Apache para su revisión lo antes posible. Presentaré un boleto yo mismo, si Chris no lo hace :-) ¡Muchas gracias, Chris!
Mikhail T.
1
Sería una mejor idea agregar una directiva separada para forzar el modo de compatibilidad. Si tengo algo de tiempo libre, lo escribiré, pero no creo que este "parche" sea una buena idea a largo plazo.
Chris S
Sí, eso parece ser lo que los desarrolladores de Apache están considerando. Ver el [hilo] [1] Empecé allí ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/…
Mikhail T.
1

Resulta que esto no fue un problema todo el tiempo. Apache aceptará el protocolo de enlace SSLv2 con cualquiera de las configuraciones que publiqué anteriormente. Un error de apretón de manos me engañó al pensar que este era el problema; en realidad era solo un problema de configuración en el que el servidor no confiaba en la CA del cliente.

Matt Hughes
fuente