Servidor casero desde cero (2) – Apache 2 y SSL

Como explicaba en alguna entrada anterior, estaba realizando una serie de tutoriales que sirvan para dejar testimonio de todo el proceso que he seguido para poner a punto cada parte del software del servidor casero, que funcionará bajo la recién liberada como estable Debian Lenny.

Por puro capricho, he decidido empezar por Apache 2 y SSL. Instalar Apache y tenerlo funcionando no entraña absolutamente ninguna dificultad como veremos más adelante, y habilitar SSL para conexiones seguras (https) es también relativamente sencillo aunque la explicación puede ser algo larga porque quiero explicar con detalle cada paso.

Bueno, ¡vamos al trabajo!

Instalando Apache

Instalar Apache no entraña ninguna dificultad: basta con instalarlo con APT para que baje e instale todo lo necesario.

# aptitude install apache2

Nada más instalado y sin tocar nada, ya podemos poner localhost en la barra de direcciones del navegador y vemos un mensaje que dice «It works!» que es la página por defecto y se encuentra en /var/www. A partir de ahi, ya podemos copiar ahi los archivos que contengan las webs que queramos alojar con Apache, o los enlaces simbólicos a las rutas donde se encuentren éstas. Fácil, ¿no?.

Habilitando SSL

Introducción

Antes de nada aclarar que los certificados auto-firmados producirán advertencias de seguridad cuando la web sea accedida a través de un enlace https. Por tanto, esto no es recomendable para una web comercial o un sitio web público pero sí para otros efectos como conectarte remotamente a tu servidor casero. En mi caso lo quiero principalmente para usar algunas aplicaciones con interfaz web que tengo instaladas en el servidor casero como eyeOS, phpsysinfo o Motion.

El proceso básicamente va a consistir en generar un certificado y decirle a Apache que use ese certificado y que escuche el puerto 443 (https). La buena noticia es que en Lenny, a diferencia de su antecesora Etch, https ya viene habilitado por defecto. Nuestro archivo clave va a ser /etc/apache2/sites-available/default-ssl, donde hay tres líneas especialmente importantes:

SSLEngine on
SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

La primera indica que SSL está activo, la segunda indica dónde se encuentra el archivo de certificado y la tercera dónde se encuentra la clave del certificado. No es mi caso pero puede que para que se generen dichos archivos necesites instalar el paquete ssl-cert.

# aptitude install ssl-cert

Activando el sitio y SSL

En este momento Apache ya está listo para servir conexiones cifradas con SSL pero aún hay que activar el módulo SSL y el sitio configurado en /etc/apache2/sites-available/default-ssl. Sólo tenemos que seguir los siguientes comandos:

# a2enmod ssl
Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run '/etc/init.d/apache2 restart' to activate new configuration!
# a2ensite default-ssl
Enabling site default-ssl.
Run '/etc/init.d/apache2 reload' to activate new configuration!

Ya sólamente nos queda reiniciar Apache y podremos acceder a nuestra web desde https://localhost (si estamos en local) o desde https://host-o-ip-del-servidor (si estamos administrando el servidor remotamente).

Primeras consideraciones

Hay que tener en cuenta, como dije al principio, nuestro certificado está auto-generado y no está firmado por ninguna autoridad de confianza, por tanto nuestro navegador (en mi caso Firefox 3) nos dará con toda probabilidad una o más advertencias de seguridad. Como en este caso nosotros conocemos perfectamente la procedencia de esta página web y su certificado se seguridad (¡como que la hemos hecho nosotros mismos!), ignoramos las advertencias. En mi caso con Firefox uso el enlace «o puede añadir una excepción», y en el siguiente diálogo «obtener certificado» y «confirmar excepción de seguridad» y de esta manera ya no aparecerá más este mensaje. A continuación reproduzco la advertencia que me da mi navegador:

Advertencia SSL

Resolviendo los problemas con el certificado

Si queremos una conexión cifrada sin más preocupaciones, tan sólo debemos ignorar las advertencias de seguridad mencionadas anteriormente y ya habríamos acabado. Pero si nos molesta ese mensajito o queremos hacerlo bien del todo porque éste tema es importante debido a la seriedad del proyecto, recomiendo la lectura del documento original de donde he sacado la mayor parte de esta información: «Crear los certificados SSL para nuestro servidor web HTTPS con Apache, OpenSSL y Debian Lenny» (Vicente Navarro) pues es difícil explicarlo mejor que él.

Previous Post Next Post

2 Comments

  • Reply Trassy 21 junio, 2013 at 15:53

    Hola,

    Te escribo básicamente para felicitarte por tener el tutorial más sencillo y completo para montar un servidor casero y funcional.

    Si se lee un poco de documentación y después se complementa con esto. Todo queda perfectamente comprendido.

    Muchísimas gracias por la ayuda y un cordial saludo.

  • Reply Fran Alburquerque 21 junio, 2013 at 17:11

    Hola Trassy, me alegra mucho que te haya servido.

  • Leave a Reply

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.