En Apache, usamos los VirtualHosts para poder definir diferentes proyectos web, cada uno con su propio dominio (o dominios), escuchando tras el mismo puerto e IP. Ésto podemos hacerlo para conexiones HTTP normales, pero antiguamente no se podía para HTTPS, puesto que la conexión venía cifrada y por tanto Apache no podía saber a qué dominio se quería acceder.
Al parecer, desde el 2006 se incorporó una extensión que le permitía al cliente (el navegador del usuario) enviar el dominio a consultar en la primera petición, antes de iniciar la transferencia cifrada de datos, permitiéndo así al servidor poder usar el mecanismo de VirtualHosts para tener varios sitios web HTTPS escuchando por el mismo puerto (típicamente el 443).
Requisitos
Seguramente nuestro servidor Linux con Apache ya tenga instalados los requisitos para funcionar, pero para asegurarnos, bastará con confirmar que tenemos:
- openSSL 0.9.8f o posterior instalado
- mod_ssl instalado en Apache
En mi ejemplo, un Fedora release 13 (Goddard) con Apache 2.2.15, lo he confirmado así:
[root@myServer]# openssl version
OpenSSL 1.0.0d-fips 8 Feb 2011[root@myServer]# httpd -M | grep -i ssl
ssl_module (shared)[root@myServer]# grep -i ssl /var/log/httpd/error_log*
Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_wsgi/3.4 Python/2.7.5 configured — resuming normal operations
Si no tienes openssl ni mod_ssl, puedes instalarlo con yum y posteriormente reiniciar Apache:
[root@myServer]# yum install openssl mod_ssl
[root@myServer]# /etc/init.d/httpd restart