Cómo habilitar TLS 1.1 y 1.2 con OpenSSL y Apache

33

A la luz de un número creciente de problemas de seguridad, como el recientemente anunciado Exploit Exploit Against SSL / TLS (BEAST), tenía curiosidad sobre cómo podríamos habilitar TLS 1.1 y 1.2 con OpenSSL y Apache para garantizar que no seremos vulnerables. a tales vectores de amenaza.

John
fuente

Respuestas:

25

TLS1.2 ahora está disponible para apache, para agregar TLSs1.2 solo necesita agregar en su configuración de host virtual https:

SSLProtocol -all +TLSv1.2

-all está eliminando otro protocolo SSL (SSL 1,2,3 TLS1)

+TLSv1.2 está agregando TLS 1.2

para una mayor compatibilidad del navegador puedes usar

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

por cierto, también puedes aumentar la suite Cipher usando:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GC$

Puede probar la seguridad de su sitio web https con un escáner en línea como: https://www.ssllabs.com/ssltest/index.html

Froggiz
fuente
2
No estoy seguro de por qué esta publicación está marcada como "desactualizada". Utilicé la solución recomendada, y el sitio de mi cliente pasó de una calificación "C" en los Laboratorios SSL de Qualsys a una "A".
Michael Sobczak
Hola, eliminé la advertencia desactualizada para evitar malentendidos, era un enlace a la respuesta correcta anterior. Estoy feliz de que tu seguridad haya aumentado;)
Froggiz
En sites-available / 000-default.conf agregué al host virtual 'SSLProtocol -all + TLSv1.2' y obtuve: AH00526: Error de sintaxis en la línea 31 de /etc/apache2/sites-enabled/000-default.conf : Comando no válido 'SSLProtocol', quizás mal escrito o definido por un módulo no incluido en la configuración del servidor. La acción 'configtest' falló.
Elia Weiss
¿Habilitaste mod_ssl? (comando: a2enmod ssl)
Froggiz
"SSLProtocol: Protocolo ilegal 'TLSv1.2'" (OS X 10.10.5)
Michael
10

De acuerdo con el registro de cambios de OpenSSL , se agregó soporte para TLS 1.2 a la rama de desarrollo de OpenSSL 1.0.1, pero esta versión aún no se ha lanzado. Probablemente también se necesitarán algunos cambios en el código mod_ssl para habilitar realmente TLS 1.2 para Apache.

Otra biblioteca SSL / TLS de uso común es NSS ; es utilizado por un módulo Apache menos conocido mod_nss ; desafortunadamente, las versiones actuales de NSS tampoco son compatibles con TLS 1.2.

Otra biblioteca SSL / TLS es GnuTLS , y pretende admitir TLS 1.2 ya en su versión actual. Hay un módulo de Apache que usa GnuTLS: mod_gnutls , que también afirma ser compatible con TLS 1.2. Sin embargo, este módulo parece ser bastante nuevo y podría no ser muy estable; Nunca intenté usarlo.

Sergey Vlasov
fuente
1
@ Sergey, gracias por los enlaces y la información. Todavía me entristece que no podamos utilizar estos estándares teniendo en cuenta su edad. Me parece extraño que necesitemos ser defensores de nuestros sistemas y nuestras redes, pero no podemos utilizar las herramientas que ayudarían a mejorar nuestras posturas de seguridad. Además, parece que la gente del navegador web tiene un camino por recorrer para ayudar a habilitar el soporte para estos estándares además de la gente del servidor como Apache y posiblemente IIS.
John
2
¿Sigue siendo correcta esta respuesta, un año después?
Ben Walther
2
@BenWalther OpenSSL 1.0.1 fue lanzado en marzo de 2012 con soporte TLS 1.2. La última versión a partir de ahora es 1.0.1c. No estoy seguro de cuánto del resto de la publicación sigue siendo válida.
Burhan Ali
6

No puede, OpenSSL todavía no ofrece una versión para TLS 1.1.

Un comentario pertinente sobre /. para este problema:

¿Le explicará amablemente a las masas sucias cómo implementaría el soporte TLS 1.1 y 1.2 en un mundo donde la biblioteca dominante OpenSSL aún no admite ninguno de los protocolos en sus versiones estables? Claro, puedes usar GnuTLS y mod_gnutls, y lo he intentado, pero no tenía sentido, ya que ningún navegador aparte de Opera lo soportaba y había algunos fallos extraños en el módulo. Se suponía que IE 8/9 los admitiría en Vista y 7, pero no pudo acceder al sitio servido por mod_gnutls cuando 1.1 y 1.2 se habilitaron en el lado del cliente. Lo intenté nuevamente ayer solo por curiosidad, y ahora incluso Opera 11.51 se ahoga en TLS 1.1 y 1.2. Por lo tanto, allí. Nada realmente es compatible con los protocolos. Debe esperar OpenSSL 1.0.1 para TLS 1.1 y nadie sabe cuándo llegará a los repositorios.

http://it.slashdot.org/comments.pl?sid=2439924&cid=37477890

Steve-o
fuente
1
@ Steve-o, gracias por la información. Esto es un poco decepcionante porque TLS 1.1 ha estado fuera desde abril de 2006 y TLS 1.2 ha estado fuera desde agosto de 2008 con actualizaciones en marzo de 2011 y todavía no tenemos la capacidad de utilizarlas.
John
4

Adam Langley, un ingeniero de Google Chrome, señala que TLS 1.1 no habría resuelto este problema debido a un problema de implementación con SSLv3 que todos deben solucionar: los navegadores tienen que bajar a SSLv3 para admitir servidores defectuosos, y un atacante puede iniciar esto degradar.

http://www.imperialviolet.org/2011/09/23/chromeandbeast.html

cjc
fuente
3

Gnu_tls funciona de maravilla y también implementa SNI (Identificación del nombre del servidor), que es muy útil en el alojamiento virtual ...

No hay problema también para encontrar paquetes bin para mod_gnutls en distribuciones de linux, lo uso desde hace 2 años y no hay problemas, también es más eficiente que openssl imho.

Pero el problema también es que la mayoría de los navegadores no son compatibles con tls 1.1 o 1.2, así que comience a difundir la idea de actualizar los navegadores regularmente a las personas.

rastrano
fuente
@ Rastrano: ¿tiene alguna sugerencia o enlace sobre cómo implementar esto? Gracias por la información y es una pena que los navegadores "modernos" aún no la admitan.
John