CONFIGURACIÓN DE SSL PARA APACHE 2 EN DEBIAN Apache 2 con SSL en Debian Para dar un poco más de seguridad al protocolo HTTP vamos a configurar HTTPS o, lo que es lo mismo, HTTP sobre SSL, en Apache 2 para Debian. Afortunadamente, el apache que se incluye a partir de la versión Lenny de Debian ya está casi todo preparado para usar HTTPS junto con el típico HTTP, a saber: − En el fichero /etc/apache2/ports.conf ya tenemos configurado el puerto sobre el que escuchará el servidor seguro, el 443, en caso de cargarse el módulo SSL de apache. NameVirtualHost *:80 Listen 80 # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 −
El sitio web por defecto, /etc/apache2/sites-enabled/000-default, especifica el puerto 80 en la directiva VirtualHost para distinguir las peticiones HTTP de las HTTPS: ...
−
Existe disponible un fichero de configuración por defecto para el sitio web seguro, /etc/apache2/sites-available/default-ssl.
Nota: A diferencia de lo que ocurre con HTTP, en HTTPS no se pueden servir fácilmente múltiples sitios virtuales encriptados con SSL desde una misma IP. La razón está en que SSL trabaja en una capa inferior a HTTP y no es posible usar la cabecera Host para distinguir los sitios virtuales a través del nombre del sitio. (En la configuración típica, solo podremos usar un certificado compartido para todas las páginas que se sirvan por HTTPS desde un único servidor web, a menos que usemos una IP diferente para cada sitio)
Por todo ello, solo será necesario realizar los siguientes ajustes: 1. Activar el módulo SSL y habilitar el sitio seguro: # a2enmod ssl # a2ensite default-ssl
(Por supuesto, como se recomienda tras la ejecución de estos comandos, habrá que recargar el servidor apache) 2. Modificar el fichero de configuración del sitio SSL por defecto, esto es, /etc/apache2/sitesenabled/default-ssl. Nota: Como hemos comentado antes, mientras que podemos añadir a la configuración de Apache tantos ficheros de sitios virtuales para HTTP que comiencen por como queramos, para HTTPS, en el puerto 443, solo podremos tener, en principio uno (a menos que configuremos diferentes IPs para los distintos sitios o usemos alguna solución avanzada como los SNI o Server Name Indication)
1/2
CONFIGURACIÓN DE SSL PARA APACHE 2 EN DEBIAN Aunque en este fichero se pueden usar prácticamente las mismas directivas que para un sitio web normal, esto es, sin SSL, es importante saber que las líneas clave para activar SSL son: SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Los certificados de snake oil (aceite de serpiente) se generan automáticamente tras la instalación del paquete ssl-cert de Debian y están asociados al hostname del sistema. Y aunque se pueden usar tal y como están, salvando las advertencias que nos mostrarán los navegadores, lo más habitual será realizar algunos ajustes para personalizar los certificados a usar, por ejemplo, siguiendo alguna de las siguientes soluciones (sin usar certificados de Autoridades de Certificación privadas): a) Crear un certificado autofirmado (se usa la misma clave tanto para generar el certificado como para firmarlo) usando el siguiente comando openssl: $ openssl req -x509 -nodes -newkey rsa:1024 -keyout servidor.key -out certificado.pem Nota: Dicho comando generará la solicitud del certificado, solicitando al usuario, de forma interactiva, los campos estándar del certificado. La mayoría de dichos campos son informativos, pero para un certificado que se usa en un servidor web, el campo Common Name debería ser el nombre del DNS del servidor que aparecerá en la URL de acceso. (De lo contrario, el navegador del cliente mostrará una alerta de seguridad cuando se compruebe el certificado del servidor)
b) Usar certificados autofirmados, por ejemplo, generados con el comando make-ssl-cert que se instala con el paquete ssl-cert de Debian tal y como se describe en el fichero de documentación /usr/share/doc/apache2.2-common/README.Debian.gz. (Al menos, con esta solución, podremos asociar el certificado a nuestro sitio web) Nota: Para proteger el acceso a la clave generada pueden ponerse los mismos permisos y propietarios que los del fichero ssl-cert-snakeoil.key. Solo root debería poder leer este fichero.
c) Crear nuestra propia autoridad certificadora tal y como se describe en el artículo “Creación simple de una PKI en Debian”. Esto se verá más adelante en la asignatura de Seguridad.
3. Comprobación del funcionamiento Para comprobar si todo funciona correctamente basta con abrir desde el navegador la URL https://localhost y aceptar las excepciones de seguridad que el navegador pueda presentar.
2/2