Let’s encrypt: Guía completa

Últimamente que está de moda la seguridad, muchos habréis oído hablar de letsencrypt. ¿Pero que es esto? Bien, letsencrypt es un proyecto impulsado por varias empresas (Cisco, Mozilla, EFF…) con el fin de poder crear certificados gratuitamente. El problema que había antes, era que si querías un certificado gratuito tenías que auto-firmarlo y luego los navegadores se quejaban de que esos certificados no estaban firmados por una entidad reconocida (de hay el mítico mensaje de “Su conexión no es segura”). Pues ahora con letsencrtypt nos ahorramos esto, además de poder crearlos mucho mas fácil.

En este blog explicare como se puede crear, actualizar, revocar e instalar un certificado fácilmente.

Para empezar instalar git

aptitude install git

Clonar el repositorio de git en /opt

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Ir al directorio de let’s encrypt

cd /opt/letsencrypt

Crear certificados

Crear los certificados es muy fácil, en este caso solo vamos a crear el certificado, no lo vamos a meter en apache.  Para eso,  hay que hacer lo siguiente:
Nota: Para crear certificados hay que tener el apache parado. Y el dominio que queramos crear tiene que apuntar a la máquina desde la que se crea.

./letsencrypt-auto certonly --standalone -d <dominio>

También se pueden crear varios dominios a la vez.

./letsencrypt-auto certonly --standalone -d <dominio> -d <dominio>

Estos certificados se almacenan en /etc/letsencrypt/live

Renovar certificados

Para la renovación, solo hay que ejecutar el siguiente comando:

./letsencrypt-auto renew

Y para automatizarlo aún mas, se puede crear una tarea en el cron para que actualice los certificados cada 30 días.

crontab -e
30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Revocar Certificados

Revocar un certificado es muy sencillo solo hay que indicarle el path de la key y el certificado que se quiere revocar.

./letsencrypt-auto revoke --cert-path /etc/letsencrypt/live/<dominio>/cert.pem --key-path /etc/letsencrypt/live/<dominio>/privkey.pem

Actualizar Let’s encrypt

Para actualizar let’s encrypt solo hay que ir al directorio y hacer un pull

cd /opt/letsencrypt
git pull

Añadir en Apache los certificados

Editar el archivo del site que llevará el certificado

vim /etc/apache2/sites-available/<site>.conf
SSLEngine on

SSLCertificateFile /etc/letsencrypt/live/<dominio>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<dominio>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<dominio>/fullchain.pem

Cargar el módulo de ssl si no lo está

a2enmod ssl

Reiniciar apache

service apache2 restart

Forzar la conexión por HTTPS

Y ya que tenemos los certificados, vamos a forzar que se conecte por HTTPS, para eso editar el archivo del site que escuche en el puerto 80.

RewriteEngine on

RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

Cargar el módulo de rewrtite si no está cargado

a2enmod rewrite

Y reiniciar apache

service apache2 restart

Fuente:
https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04

9 comments

    1. Buenas Endika,

      si te refieres a la linea: /opt/letsencrypt/letsencrypt-auto renew es depende donde hayas hecho el git clone. En mi caso lo he hecho en /opt por eso ese path.

      1. sisi ya, por eso mismo. La parte de actualizar la tienes puesta como:
        Actualizar Let’s encrypt

        Para actualizar let’s encrypt solo hay que ir al directorio y hacer un pull
        cd /etc/letsencrypt
        git pull

        Pero anteriormente no lo has clonado en ese directorio, esta en /opt/letsencrypt

  1. hola, yo tengo montado el apache con el certificado, hasta ahi todo bien, lo renuevo manualmente cada mes o por crontab ya que hay que parar apache para renovarlo.

    El problema que tengo es que no puedo añadir 2 cettificados al mismo fichero de configuración, si pongo las 3 mismas lineas para añadir otro no funciona ninguno de los 2

    es posible?

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *