Apache SSL VirtualHosts en una sola IP usando el certificado UCC / SAN

11

Necesito alojar varios hosts virtuales Apache con SSL desde una sola IP.

Ahora, entiendo que debido a que SSL se ajusta a la solicitud HTTP, no hay forma de saber qué host se solicita hasta que se haya enviado primero una clave pública al cliente. Esto esencialmente rompe la posibilidad de que los hosts virtuales SSL utilicen un certificado SSL estándar.

He obtenido un Certificado de Comunicaciones Unificadas (UCC), también conocido como certificado de Nombre Alternativo del Sujeto (SAN). Esto me permite servir el mismo certificado para múltiples dominios.

Me gustaría que este sea el certificado servido por Apache para cualquier solicitud SSL, y luego haga que Apache resuelva el host virtual como de costumbre, una vez que se haya establecido el cifrado.

¿Cómo debo configurar Apache para esto? He tratado de investigar cómo se puede hacer esto, pero todo lo que puedo encontrar son citas que dicen que es posible, pero no hay detalles:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Si bien Apache puede renegociar la conexión SSL más tarde después de ver el nombre de host en la solicitud (y lo hace), es demasiado tarde para elegir el certificado de servidor correcto para que coincida con el nombre de host de la solicitud durante el protocolo de enlace inicial, lo que resulta en advertencias / errores del navegador sobre los certificados que tienen El nombre de host incorrecto en ellos.

serverfault.com/questions/48334/apache-virtual-hosts-with-ssl

Por cierto, es posible tener múltiples hosts virtuales con nombre SSL seguro en una sola dirección IP, lo hago en mi sitio web, pero produce todo tipo de advertencias en los registros de Apache y advertencias de certificados en el navegador. Ciertamente no lo recomendaría para un sitio de producción que necesita verse limpio. -David 31 de julio a las 4:58

www.digicert.com/subject-alternative-name.htm

Host virtual Múltiples sitios SSL en una sola dirección IP. Hospedar múltiples sitios habilitados para SSL en un solo servidor generalmente requiere una dirección IP única por sitio, pero un certificado con nombres alternativos de sujeto puede resolver este problema. Microsoft IIS 6 y Apache pueden alojar sitios HTTPS de host virtual mediante SSL de comunicaciones unificadas, también conocidos como certificados SAN.


Por favor ayuda.

Mikuso
fuente

Respuestas:

13

Probé esto en mi instancia de apache 2.2.14 y funcionó bien:

Use la directiva NameVirtualHost (a ports.conf):

NameVirtualHost *:443

define tus vhosts:

<VirtualHost *:443>
  ServerName www.siteA.com
  DocumentRoot "/opt/apache22/htdocs/siteA"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
  ServerName www.siteB.com
  DocumentRoot "/opt/apache22/htdocs/siteB"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>

Usé este enlace como un recurso.

micah
fuente
1
La respuesta es correcta. Una cosa que me hizo tropezar por un tiempo LOOOONNNNNNGGGGG fue que tenía un error tipográfico donde tenía <Virtual *:433>... ¡el puerto correcto es 443! Ugh, horas de mi vida perdidas en este ... Espero que mi dolor no haya sido en vano y esto ayude a alguien ...
Nick P.