Sí, pero hay algunas advertencias.
Esto se logra a través de la Indicación del nombre del servidor, una extensión de Transport Layer Security.
¿Qué es la indicación del nombre del servidor?
La indicación de nombre de servidor ( RFC 6066 ; RFC 4366 obsoleto , RFC 3546 ) es una extensión de Transport Layer Security que permite al cliente decirle al servidor el nombre del host al que está tratando de llegar.
SNI es compatible con TLS 1.0 y superior de acuerdo con las especificaciones, pero las implementaciones pueden variar (ver más abajo). No se puede usar con SSL, por lo que una conexión debe negociar TLS (ver RFC 4346 apéndice E ) para que se use SNI. Esto generalmente ocurre automáticamente con el software compatible.
¿Por qué se necesita SNI?
En una conexión HTTP normal , el navegador informa al servidor del nombre de host del servidor al que está tratando de llegar utilizando el Host:
encabezado. Esto permite que un servidor web en una sola dirección IP sirva contenido para múltiples nombres de host, lo que comúnmente se conoce como alojamiento virtual basado en nombres .
La alternativa es asignar direcciones IP únicas para cada nombre de host web que se servirá. Esto se hizo comúnmente en los primeros días de la web, antes de que se supiera ampliamente que las direcciones IP se agotarían y comenzaran las medidas de conservación, y todavía se hace de esta manera para los hosts virtuales SSL (que no usan SNI).
Debido a que este método de transmisión del nombre de host requiere que la conexión ya esté establecida, no funciona con conexiones SSL / TLS. En el momento en que se configura la conexión segura, el servidor web ya debe saber qué nombre de host va a servir al cliente, porque el servidor web está configurando la conexión segura.
SNI resuelve este problema haciendo que el cliente transmita el nombre de host como parte de la negociación de TLS, de modo que el servidor ya sepa qué host virtual se debe utilizar para dar servicio a la conexión. El servidor puede usar el certificado y la configuración para el host virtual correcto.
¿Por qué no usar diferentes direcciones IP?
El Host:
encabezado HTTP se definió para permitir que se sirviera más de un host web desde una sola dirección IP debido a la escasez de direcciones IPv4, lo que se reconoció como un problema a mediados de los años noventa. En entornos de alojamiento web compartido, cientos de sitios web únicos y no relacionados pueden ser atendidos utilizando una sola dirección IP de esta manera, conservando el espacio de direcciones.
Los entornos de alojamiento compartido encontraron que el mayor consumidor de espacio de direcciones IP era la necesidad de sitios web seguros para tener direcciones IP únicas, creando la necesidad de SNI como una medida provisional en el camino hacia IPv6. Hoy en día, a veces es difícil obtener tan solo 5 direcciones IP (/ 29) sin una justificación significativa, lo que a menudo resulta en retrasos en la implementación.
Con el advenimiento de IPv6, tales técnicas de conservación de direcciones ya no son necesarias, ya que un solo host puede tener más direcciones IPv6 asignadas de las que hoy contiene todo Internet, pero las técnicas probablemente aún se utilizarán en el futuro para dar servicio a IPv4 heredado conexiones
Advertencias
Algunas combinaciones de sistema operativo / navegador no son compatibles con SNI (ver más abajo), por lo que usar SNI no es apropiado para todas las situaciones. Los sitios que se dirigen a tales combinaciones de sistema / navegador tendrían que renunciar a SNI y continuar usando direcciones IP únicas para cada host virtual.
De particular interés, ninguna versión de Internet Explorer en Windows XP es compatible con SNI. Como esta combinación todavía representa una porción significativa (pero en constante disminución; alrededor del 16% del tráfico de Internet en diciembre de 2012 según NetMarketShare) del tráfico de Internet, SNI sería inapropiado para un sitio dirigido a estas poblaciones de usuarios.
Apoyo
Muchos, pero no todos, los paquetes de software comúnmente utilizados admiten SNI.
(La omisión de esta lista no significa necesariamente falta de soporte; significa que había un límite en cuanto a lo que podía escribir, o no podía encontrar rápidamente la información en una búsqueda. Si su paquete de software no está en la lista, busque por su nombre plus sni
debería revelar si existe soporte y cómo configurarlo).
Soporte de biblioteca
La mayoría de los paquetes dependen de una biblioteca externa para proporcionar soporte SSL / TLS.
- GNU TLS
- JSSE (Oracle Java) 7 o superior, solo como cliente
- libcurl 7.18.1 o superior
- NSS 3.1.1 o superior
- OpenSSL 0.9.8j o superior
- OpenSSL 0.9.8f o superior, con banderas de configuración
- Qt 4.8 o superior
Soporte del servidor
La mayoría de las versiones actuales de software de servidor popular admiten SNI. Las instrucciones de configuración están disponibles para la mayoría de estos:
Soporte al cliente
La mayoría de los navegadores web actuales y los agentes de usuario de línea de comandos admiten SNI.
Escritorio
- Chrome 5 o superior
- Chrome 6 o superior en Windows XP
- Firefox 2 o superior
- Internet Explorer 7 o superior, que se ejecuta en Windows Vista / Server 2008 o superior
- Internet Explorer en Windows XP no es compatible con SNI independientemente de la versión de IE
- Konqueror 4.7 o superior
- Opera 8 o superior (puede requerir TLS 1.1 habilitado para funcionar)
- Safari 3.0 en Windows Vista / Server 2008 o superior, o Mac OS X 10.5.6 o superior
Móvil
- Navegador de Android en 3.0 Honeycomb o superior
- Safari de iOS en iOS 4 o superior
- Windows Phone 7 o superior
Línea de comando
- cURL 7.18.1 o superior
- wget 1.14 o superior (las distribuciones pueden haber respaldado un parche para soporte SNI)
Sin soporte
- Navegador BlackBerry
- Internet Explorer (cualquier versión) en Windows XP
(Nota: Parte de la información para esta respuesta se obtuvo de Wikipedia ).