• Ubuntu 12.11.2010 Sin Comentarios

    Apache seguro con SSL

    En este post voy a explicar el proceso de instalacion y configuracion de un servidor Apache que acepte conexiones SSL.

    Instalamos el servidor Apache desde el gestor de paquetes Synaptic, el paquete a instalar es apache2-mpm-worker y sus dependencias.

    Ficheros de configuracion

    /etc/apache2/apache2.conf (No hay que cambiar nada)

    /etc/apache2/httpd.conf (No hay que cambiar nada)

    /etc/apache2/ports.conf (No hay que cambiar nada)

    Los ficheros de configuracion de los hosts virtuales se encuentran en /etc/apache2/sites-avaible y para activarlos hay que hacer un link simbolico en /etc/apache2/sites-enabled que apunte al fichero correspondiente dentro de sites-avaible.

    Demonio

    /etc/int.d/apache2 restart

    Generar una clave y certifiacado autofirmado

    Para poder generar tanto la clave, como el certificado que autofirmaremos con dicha clave debemos tener instalado el paquete openssl y sus librerías.

    En caso de no tenerlo instalado se puede hacer mediante el siguiente comando:

    #Instalar paquete openssl y sus librerías

    apt-get install openssl

    #Generar clave y certificado firmado con la clave

    openssl req  –new  –x509  -days 365 –sha1 –newkey rsa:1024 –nodes –keyout serverkey –out server.crt

    • -x509: identifica que un certificado es requerido, en vez de solo una peticion de certificado.
    • -days 365: la validez del certificado. Expirara en un año.
    • -sha1: especifica que la encriptación SHA1 sera utilizada.
    • Rsa:1024 indica  que la clave generasa sea RSA de 1024 bits.
    • -nodes: especifica que no se pida frase de paso.
    • -keyout y –out: indican donde almacenar ela clave y el certificado.

    Nota: la clave solo debe poder ser leida por root, mientras que el certificado puede ser leído por todo el mundo y debe poder ser leído por el usurio que ejecuta Apache.

    Tanto la clave como el certificado se crean en la misma ruta donde se ejecuto el comando.

    Configuracion de Apache para que acepte conexiones SSL

    Suponemos que el certicado y la clave se hayan en la ruta /etc/apache2.  Nos situamos en dicho directorio y cambiamos los permisos para que la clave solo pueda ser leida por el usuario root:

    cd /etc/apache2

    chmod 400 ./serverkey

    Ahora debemos crear los enlaces simbolicos pertinentes para que quede activo el host virtual que acepta las conexiones ssl, cuyo fichero lo podeis encontrar en /etc/apache2/sites-avaible/default-ssl:

    cd  /sites-enabled

    ln -s ../sites-avaible/default-ssl ./default-ssl

    Ahora creamos los enlaces simbolicos pertinentes para que queden activos tanto el modulo ssl como su configuracion:

    cd  ../mods-enabled

    ln -s ../mods-avaible/ssl.load ./ssl.load

    ln -s../mods-avaible/ssl.conf ./ssl.conf

    El ultimo paso seria editar el fichero /etc/apache2/sites-avaible/default-ssl para modificar las lineas que apuntan al certificado digital y a la clave.

    Las lineas a cambiar en el fichero son las siguientes:

    SSLCertificateFile /etc/apache2/server.crt

    SSLCertificateKeyFile /etc/apache2/server.key

    Si fuera necesario se cambian las rutas donde se encuentra el contenido web a ser accedido via https, en mi caso en el directorio home del usuario gasuco, dentro de la correspondiente carpeta www.

    Las lineas a cambiar en el fichero son las siguientes:

    DocumentRoot /home/gasuco/www/default-ssl

    Tambien se cambia en :

    <Directory /home/gasuco/www/default-ssl>

    ……

    </Directory>

    Ya tenemos el servidor web Apache configurado para aceptar conexiones https, procedemos a reiniciar el servidor a probar que la configuracion funcione:

    /etc/init.d/apache2/ restart

    Abrimos un navegador web y ponemos https://localhost y deberia salir un aviso:

    Excepcion conexion https

    Elegimos entiendo los riesgos >Añadir Excepcion > Confirmar Excepcion de seguridad.

    Tags: , , , ,