¿Es posible usar SNI (indicación del nombre del servidor) en un protocolo de enlace SSLv3 o SSLv2? De las consultas de búsqueda, parece que SNI es una extensión TLS. ¿Hay alguna alternativa a SNI?
¿Es posible usar SNI (indicación del nombre del servidor) en un protocolo de enlace SSLv3 o SSLv2? De las consultas de búsqueda, parece que SNI es una extensión TLS. ¿Hay alguna alternativa a SNI?
La especificación SSL-3.0 contiene el siguiente extracto, en la descripción de ClientHello
de mensaje:
Forward compatibility note: In the interests of forward
compatibility, it is permitted for a client hello message to include
extra data after the compression methods. This data must be included
in the handshake hashes, but must otherwise be ignored.
Lo que esto significa es que, si bien las extensiones TLS solo se definieron formalmente, para TLS-1.0 y posteriores, se pueden incluir en un ClientHello
para SSL-3.0, y nada impide que ningún cliente o servidor para usar dichas extensiones como parte de un protocolo de enlace SSL-3.0. Sin embargo, OpenSSL parece no estar dispuesto a hacerlo. En particular, la herramienta de línea de comandos, cuando se usa como cliente ( openssl s_client
), no envía una extensión SNI (o cualquier otra extensión) cuando se le indica que use solo SSL-3.0.
No hay espacio para extensiones en un mensaje SSL-2.0 ClientHello
. Una consecuencia es que si un cliente desea admitir un servidor solo SSL-2.0, debe enviar su ClientHello
en el formato SSL-2.0, y esto evita el uso de cualquier extensión.
Tenga en cuenta que el soporte de SNI involucra tanto al cliente como al servidor (el cliente debe enviar la extensión, el servidor debe entenderlo). Es posible que los clientes antiguos no conozcan SNI (un ejemplo notable es Internet Explorer cuando se ejecuta en Windows XP). Un cliente que requiere el uso de SSL-2.0 o SSL-3.0, pero no es compatible con TLS-1.0, debe ser bastante antiguo (más de 15 años) y es poco probable que esté al tanto de la existencia de SNI. TLS-1.0 se publicó en January 1999 , mientras que SNI se publicó formalmente por primera vez en June 2003 .
En cualquier caso, no debe usar SSL-2.0 ni SSL-3.0, ya que ambos tienen problemas de seguridad irremediables. Incluso hay un estándar que prohíbe el uso de SSL-2.0. Se puede argumentar que un navegador web que no conoce SNI o TLS-1.0 es un navegador que no se ha actualizado durante muchos años y, por lo tanto, debe incluir una gran cantidad de vulnerabilidades conocidas, y es probable que sea ya alberga un puñado de malware y parte de una o varias botnets. En esa vista, el único comportamiento sano de un servidor web que recibe una solicitud de conexión limitada a SSL-3.0 (o inferior) es rechazarlo incondicionalmente. Puede ser contagioso.