Múltiples dominios con SSL en la misma IP

Respuestas:

28

Creo que es una buena idea cómo explicar cuál es realmente el problema con los hosts virtuales y SSL / TLS.

Cuando te conectas a un servidor apache a través de HTTP, envías un conjunto de encabezados http. Se ven así:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

Si tiene alojamiento virtual, Apache buscará en el campo hosts, luego busque el index.html correcto para usted. El problema es cuando agrega SSL / TLS. El servidor configura el cifrado antes de que envíe su solicitud http. Por lo tanto, el servidor no sabe si irá a www.nice-puppies.com o www.evil-haxxor.com hasta que se complete la autenticación / encriptación. El servidor no puede adivinar (ya que enviar el certificado incorrecto le da un mensaje de error desagradable).

Una solución es un certificado comodín (como se mencionó anteriormente), que es válido para * .nice-puppies.com. De esa manera, puede usar el mismo certificado para múltiples dominios, pero no puede tener un certificado * .com (está bien, puede, pero sería muy malo para todos los demás), por lo que, en general, necesitará una IP separada para cada uno. Dominio HTTPS.

pehrs
fuente
44
Buena explicación, pero podría tener un certificado de UC que permita múltiples dominios en un certificado
Sam Cogan
1
Sí, puede tener certificados de comunicaciones unificadas (certificados UCC / UC). Probablemente debería haberlos mencionado. Hasta donde he visto, se usan principalmente con Exchange / Office Communication Server. Y si usa el mismo certificado para diferentes sitios, abusa de la semántica x509. Pero sí funcionan en la mayoría de las pilas TLS.
pehrs
66
También SNI. Su declaración ya no es definitiva, pehrs. Su explicación es históricamente precisa pero ya no refleja las tecnologías actuales.
Warner
44
SNI no funciona (¿todavía?) Con IE6 en Windows XP. Qué tipo de límite limita el valor, teniendo en cuenta la cuota de mercado. Creo que el usuario original estaba más interesado en lo que sucedería que el conjunto de hacks que existen para solucionarlo.
Pehrs
Intenté corregir el error de ortografía al final de SHTTP a HTTPS, pero esto fue rechazado como una edición demasiado pequeña.
Stuart
8

La verdadera solución a este problema es la "Indicación del nombre del servidor":

http://en.wikipedia.org/wiki/Server_Name_Indication

Está comenzando a implementarse en servidores y clientes web, por lo que no es realmente algo que pueda usar ahora, pero con suerte dentro de unos años no será un problema tan grande.


fuente
2

El problema es que el certificado SSL está vinculado a la dirección IP, no al nombre de host. Cuando la conexión llega a la dirección IP para una solicitud HTTPS, la primera acción es establecer la comunicación SSL pasando el certificado del servidor y / o el certificado del cliente. Durante esta etapa del protocolo de enlace de conexión, el servidor Apache no tiene forma de saber para qué sirve la solicitud. Esto es diferente para el tráfico HTTP (no SSL), ya que después de que se establece la conexión, el servidor Apache puede determinar la configuración del host virtual que se utilizará si el cliente envía el Hostencabezado o lo transfiere al primer host virtual configurado.

Si tuviera varios hosts virtuales bajo el mismo dominio, podría configurar un solo certificado comodín en la dirección IP y tener múltiples hosts virtuales con diferentes nombres de servidor definidos; sin embargo, si esos nombres de servidor no están bajo el mismo nombre de dominio, generarían errores en el servidor del cliente. Esto funcionaría ya que el certificado comodín sería válido para todos los nombres de host con ese nombre de dominio. Necesitaría otra dirección IP si los nombres de dominio fueran diferentes, ya que el primer certificado definido para esa dirección IP sería el que se presenta para conectar clientes.

Jeremy Bouse
fuente
1

Esto se puede agregar en un solo certificado SSL como SAN (Nombre alternativo del sujeto). En mi experiencia tuve que solicitar un certificado de organización. Yo usé globalsign.


fuente
1

En realidad, con un software moderno, PUEDE servir varios sitios HTTPS a través de una sola dirección IP, utilizando una nueva función llamada 'SNI - Indicación de nombre del servidor'.

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Todavía tengo que usar esto yo mismo, pero suena bien para sitios internos e intranet. La mayoría de los navegadores modernos admiten SNI. IE6 no admite SNI, pero IE7 sí.

(Corrección: 20100426 - SNI no es compatible con Windows XP en absoluto. Windows Vista y superior admiten SNI. Consulte "Sección 2.2.3" en http://msdn.microsoft.com/en-us/library/dd208005% 28v = PROT.13% 29.aspx # id8 ).

Stefan Lasiewski
fuente
2
Con IE, el soporte no proviene de la versión de IE, sino de la versión del sistema operativo subyacente. Vista y superior admiten SNI. XP no, así que incluso con IE8 en XP, no obtendrá SNI.
Nasko
1

Estoy trabajando en el mismo problema. Como prueba, IE7 y versiones posteriores (solo en Win7 y Vista) / Chrome / Firefox / Safari / Opera admiten "Indicación de nombre del servidor". De hecho, si el navegador usa Tsl 1.0, es compatible con "Indicación de nombre del servidor".

Sean
fuente
0

Creo que el OP pregunta qué sucede si agrega un certificado SSL a una IP que tiene muchos hosts virtuales. Si ninguno de los otros hosts virtuales usa un certificado SSL, entonces él debería estar en claro.

Iraklis
fuente
Bueno, estoy desconcertado por la pregunta. El título de la Q dice negro, el contenido dice blanco.
Iraklis
este es el blanco
Iraklis
0

Si intenta agregar dos certificados en la misma IP, solo se usará el certificado de primera lectura en todas partes. Una IP: un certificado SSL.

Si desea obtener más certificados SSL en la misma IP, considere obtener un dominio de múltiples dominios (llamado UCC, échele un vistazo a @ godaddy ) o un certificado comodín (más caro).

Andrejs Cainikovs
fuente
¿Quiere decir que el certificado agregado por primera vez en Apache conf se usará para ambos?
nitins
1
Si tiene dos certificados: para el sitio A y B, y apache carga la configuración para los hosts en la secuencia A.conf, luego B.conf, entonces usará el certificado de A.conf. O viceversa.
Andrejs Cainikovs