Cifrado SSL con Apache2 en Debian

Instalar el servidor Apache2 en Debian no es una tarea complicada sin duda, pero el ir puliendo algunos detalles para tener un mejor performance, seguridad y estabilidad en general, a veces lo es.

Supongamos que deseamos agregar un nuevo sitio pero que la comunicación entre el cliente y el servidor sea cifrada mediante el uso de https. Para esto necesitamos activar el cifrado ssl en apache, lo hacemos mediante la utilidad a2enmod ejecutando:

También debemos decir a apache que debe aceptar solicitudes en el puerto 443 que es el puerto estándar de https por lo que editamos el archivo /etc/apache2/ports.conf y agregamos la línea Listen 443, he aquí la configuración que tiene mi Apache2:

Es importante aclarar que al menos tanto el módulo SSL como el puerto 443 ya se encontraban ‘activados’ cuando instalé Apache2.

Ahora necesitamos crear los certificados que utilizaremos para el cifrado, para ello utilizaremos OpenSSL, deberemos instalarlo ejecutando:

Por si no lo tenemos instalado, una vez que lo tengamos, se crean dos certificados, el público y el privado:

Los archivos generados serían:

La petición de nuevo certificado, que una autoridad certificadora (CA) tendrá que firmar, en /etc/ssl/certs/publico.pem.

La clave privada del certificado en /etc/ssl/private/privado.pem.

Podemos usar CAcert.org para firmar la petición de certificado. Debido a que CAcert.org tan sólo puede verificar la información contenida en el Common Name, da igual lo que introduzcamos en los otros campos (el resto lo descarta).

El certificado resultante después de la firma de CACert.org lo dejaremos en el archivo /etc/ssl/certs/publico.pem con permisos 644 para el usuario y grupo root. La clave privada ya se encuentra en /etc/ssl/private/privado.pem con permisos 640 para el usuario root, pero debemos cambiarle el grupo a ssl-cert:

Para utilizar los servicios de CACert.org debemos realizar los siguientes pasos:

  1. Darnos de alta en su web.
  2. Una vez validados en su sistema, dar de alta nuestro dominio dominiocifrado.com
  3. Una vez verificado nuestro dominio, procederemos a realizar la solicitud del certificado usando el contenido del fichero /etc/ssl/certs/publico.pem.

En el caso de que no querramos firmar el certificado por CACert.org, podemos hacerlo nosotros mismos:

Nota: Es altamente recomendable hacerlo con CACert.org ya que es un ente reconocido y el servicio es gratuito. Si requieren algo más profesional, pueden checar con VeriSign.

Nota2: Cuando ya se encuentre firmado nuestro certificado nos llegará un correo electrónico indicándonos el contenido de la firma, el contenido de dicha firma debemos ponerla en lugar del contenido del archivo que se encuentra en /etc/ssl/certs/publico.pem

Ahora nada más queda tener nuestro archivo de configuración dentro de /etc/apache2/sites-available/dominiocifrado.conf

Aquí la configuración del archivo dominiocifrado.conf

Después procederemos a reiniciar nuestro servidor Apache con el siguiente comando:

Y entrar a nuestro nuevo sitio web cifrado:

Veremos nuestro certificado más o menos como esto:

Cifrado

Cifrado 2

Eso es todo, espero a alguien pueda parecerle útil esta información

Fuentes:

LinuxSilo.org

esDebian.org

Notas relacionadas:

Leave a Reply to john delgadelo Cancel Reply

*

2 comments

  1. john delgadelo

    Internet Explorer 8.0 Windows XP

    Thank you it is a very good tutorial, it is the best I have found… It worked very good with debian 5 and apache2

  2. john delgadelo

    Internet Explorer 8.0 Windows XP

    Perdón puse que usé debian5 y era debian 6

Next ArticleHalo