Indicación del nombre del servidor


La indicación de nombre de servidor ( SNI ) es una extensión del protocolo de red informática Transport Layer Security (TLS) mediante el cual un cliente indica a qué nombre de host está intentando conectarse al comienzo del proceso de negociación. [1] Esto permite que un servidor presente uno de varios certificados posibles en la misma dirección IP y número de puerto TCP y, por lo tanto, permite múltiples sitios web seguros ( HTTPS ) (o cualquier otro servicio ).sobre TLS) para ser atendido por la misma dirección IP sin requerir que todos esos sitios usen el mismo certificado. Es el equivalente conceptual al alojamiento virtual basado en nombres HTTP/1.1 , pero para HTTPS. Esto también permite que un proxy reenvíe el tráfico del cliente al servidor correcto durante el protocolo de enlace TLS/SSL. El nombre de host deseado no está encriptado en la extensión SNI original, por lo que un intruso puede ver qué sitio se está solicitando.

Antes de SNI, al realizar una conexión TLS, el cliente no tenía forma de especificar a qué sitio intentaba conectarse. Por lo tanto, si un servidor físico alberga varios sitios, el servidor no tiene forma de saber qué certificado usar en el protocolo TLS. Más en detalle, al realizar una conexión TLS, el cliente solicita un certificado digital del servidor web. Una vez que el servidor envía el certificado, el cliente lo examina y compara el nombre al que intentaba conectarse con los nombres incluidos en el certificado. Si se produce una coincidencia, la conexión continúa con normalidad. Si no se encuentra una coincidencia, se puede advertir al usuario de la discrepancia y la conexión puede cancelarse, ya que la falta de coincidencia puede indicar un intento de ataque de intermediario.. Sin embargo, algunas aplicaciones permiten al usuario eludir la advertencia para continuar con la conexión, asumiendo el usuario la responsabilidad de confiar en el certificado y, por extensión, en la conexión.

Sin embargo, puede ser difícil, o incluso imposible debido a la falta de una lista completa de todos los nombres por adelantado, obtener un certificado único que cubra todos los nombres de los que será responsable un servidor. Es probable que un servidor responsable de varios nombres de host necesite presentar un certificado diferente para cada nombre (o pequeño grupo de nombres). Es posible usar subjectAltName para contener múltiples dominios controlados por una persona [2] en un solo certificado. Dichos "certificados de comunicaciones unificadas" deben volver a emitirse cada vez que cambia la lista de dominios.

El alojamiento virtual basado en nombres permite alojar múltiples nombres de host DNS en un solo servidor (generalmente un servidor web) en la misma dirección IP. Para lograr esto, el servidor usa un nombre de host presentado por el cliente como parte del protocolo (para HTTP, el nombre se presenta en el encabezado del host ). Sin embargo, cuando se usa HTTPS, el protocolo de enlace TLS ocurre antes de que el servidor vea los encabezados HTTP. Por lo tanto, no era posible que el servidor usara la información en el encabezado del host HTTP para decidir qué certificado presentar y, como tal, solo los nombres cubiertos por el mismo certificado podrían ser atendidos desde la misma dirección IP.

En la práctica, esto significaba que un servidor HTTPS solo podía atender un dominio (o un pequeño grupo de dominios) por dirección IP para una navegación segura y eficiente. Asignar una dirección IP separada para cada sitio aumenta el costo del alojamiento, ya que las solicitudes de direcciones IP deben justificarse ante el registro regional de Internet y las direcciones IPv4 ahora están agotadas . Para IPv6, aumenta la sobrecarga administrativa al tener varias direcciones IP en una sola máquina, aunque el espacio de direcciones no esté agotado. El resultado fue que muchos sitios web se vieron efectivamente restringidos de utilizar comunicaciones seguras.

SNI soluciona este problema haciendo que el cliente envíe el nombre del dominio virtual como parte del mensaje ClientHello de la negociación TLS. [3] Esto permite que el servidor seleccione antes el dominio virtual correcto y presente al navegador el certificado que contiene el nombre correcto. Por lo tanto, con clientes y servidores que implementan SNI, un servidor con una sola dirección IP puede servir a un grupo de nombres de dominio para los que no es práctico obtener un certificado común.