Ú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
En la parte de actualizar te has colado con la ruta, /opt/letsencrypt en lugar de /etc/letsencrypt.
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.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
Bien visto, pensaba que me decías el actualizar los certificados. No me había dado cuenta de eso.
Gracias
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?
con la opción
-d
deberías de poder encadenar certificados. Que comando utilizas? de todos modos la forma de hacer esto ahora es Certbot