sábado, 23 de mayo de 2009

SITIO WEB CON APACHE2 Y SSL


La aplicación de seguridad en nuestros sitios Web debe ser una práctica constante y sobretodo cuando existen ambientes hostiles como Internet o Intranets.

En este artículo, muestro cómo realizar la instalación de un certificado autofirmado en un sitio web creado en mi máquina local.

Para este ejemplo consideramos la siguiente información:





  • Sistema operativo: Por supuesto! ... GNU/Linux Debian Lenny :D
  • hostname: jgdu-laptop
  • ip: 192.168.1.114
  • Sólo se puede configurar un sitio seguro por cada dirección IP configurada en el sistema.
  • Suponemos que está instalado el servidor web "Apache 2".
A continuación los pasos necesarios:
  1. Identificar correctamente la máquina que tiene tendrá el sitio Web seguro:
    Esto es necesario revisarlo dado que es probable que nuestra máquina de prueba no esté registrada en ningún servidor de nombres de dominio. Entonces verificamos que el archivo "/etc/hosts" contenga la entrada correspondiente asociando al IP adecuado:
    ...
    192.168.1.114 jgdu-laptop jgdu-laptop
    ...
  2. Creación del certificado digital:
    root@jgdu-laptop:/etc/apache2# cd /etc/apache2
    root@jgdu-laptop:/etc/apache2# mkdir certs
    root@jgdu-laptop:/etc/apache2#cd certs
    ... aquí viene la creación del certificado ...
    root@jgdu-laptop:/etc/apache2# openssl req $@ -new -x509 -days 365 -nodes -out jgdu-laptop.crt -keyout jgdu-laptop.key
    ... se responden unas preguntas sencillas previas a la generación de los archivos.
  3. Verificar la creación de los archivos:
    root@jgdu-laptop:/etc/apache2# ls
    ... deben aparecer los siguientes archivos ...
    jgdu-laptop.crt jgdu-laptop.key
  4. Habilitar el módulo "SSL" en el servidor Web:
    root@jgdu-laptop:/etc/apache2# cd /etc/apache2/mods-available
    root@jgdu-laptop:/etc/apache2# a2enmod ssl
  5. Configurar el sitio Web SSL predeterminado:
    root@jgdu-laptop:/etc/apache2# cd /etc/apache2/sites-available
    root@jgdu-laptop:/etc/apache2# vim default-ssl
    Ubicar las directivas del certificado y establecer las rutas adecuadas a los archivos generados previamente.
    ...
    SSLCertificateFile /etc/apache2/certs/jgdu-laptop.crt
    SSLCertificateKeyFile /etc/apache2/certs/jgdu-laptop.key
    ...
  6. Habilitar el sitio Web con SSL:
    root@jgdu-laptop:/etc/apache2# cd /etc/apache2/sites-available/
    root@jgdu-laptop:/etc/apache2# a2ensite default-ssl
  7. Reinicar el servicio Web Apache2:
    root@jgdu-laptop:/etc/apache2# /etc/init.d/apache2 restart
  8. Probar el acceso al sitio seguro con un explorador visitando la página:
    https://jgdu-laptop/
Si deseamos que todo el tráfico de nuestro sitio Web se realice a través de una conexión segura, debemos habilitar el módulo "Rewrite" en el Apache2 y configurar el sitio por defecto "default" ubicado en "/etc/apache2/sites-available/default" con la regla de re-escritura siguiente:

RewriteEngine On
Options +FollowSymlinks
rewriteCond %{SERVER_PORT} 80
rewriteRule ^(.*)$ https://oe.asignaturas.usb.ve/moodle$1 [R,L]

Esta información se coloca dentro de las directivas "" pero fuera de los "".

Espero sea de utilidad.

Éxitos!

José Gregorio.

FUENTES CONSULTADAS:
  1. http://crysol.org/es/node/198
  2. http://www.debian-administration.org/article/Setting_up_an_SSL_server_with_Apache2
  3. http://www.gpltarragona.org/archives/318

No hay comentarios: