Cómo configurar VirtualHosts para HTTPS

ApacheEn 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í:

[[email protected]]# openssl version
OpenSSL 1.0.0d-fips 8 Feb 2011

[[email protected]]# httpd -M | grep -i ssl
ssl_module (shared)

[[email protected]]# 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:

[[email protected]]# yum install openssl mod_ssl
[[email protected]]# /etc/init.d/httpd restart

Continuar leyendo «Cómo configurar VirtualHosts para HTTPS»

Generar petición CSR para HTTPS

Apache HTTPSi se quiere montar un servidor que soporte HTTPS, se deberá contar un certificado válido para el sitio web. Para ello, una opción es directamente, comprar dicho certificado, en alguno de los múltiples sitios web que ofrecen esta opción, como GoDaddy, los cuales, ya tienen las instrucciones para generar la petición del certificado aquí:

Para generar la petición para el certificado, se deberán seguir una serie de pasos:

  • Crear el certificado y la petición CSR (Solicitud para Firma del Certificado), ejecutando en el servidor web, el siguiente comando (NOTA: yourdomain puede ser cualquier texto, por ejemplo, para dominio.com podríamos usar dominio.key y dominio.csr respectivamente):

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

Ej. openssl req -new -newkey rsa:2048 -nodes -keyout www_domain_com.key -out www_domain_com.csr

Continuar leyendo «Generar petición CSR para HTTPS»