- Inicie sesión para enviar comentarios
Introducción
Lets Encrypt es un servicio que ofrece certificados SSL gratuitos a través de una API. Certbot es un cliente de Lets Encrypt, que tiene varias formas de validar el dominio, busca certificados y configura automáticamente Apache y Nginx.
En esta guía se obtendrá los certificados lets encrypt para cualquier tipo de servicio, sin entrar en detalles de la configuración del certificado. Se utilizará Debian 9 y CentOS 7.
1. Certificados Lets Encrypt en Debian 9
Requisitos
- Debian 9, permisos de root
- Nombre de dominio resolviendo a su servidor (ejemplo: entidad.gob.bo)
- No se debe usar el puerto 80 o 443 (certbot genera un servicio temporal)
1.1. Instalación de Certbot
Debian 9 incluye el cliente de Certbot en los repositorios por defecto, usamos apt para instalarlo:
$ sudo apt install certbot
Verificamos la instalación obteniendo la versión de certbot
$ certbot --version
Salida
certbot 0.XX.0
1.2. Ejecutando Certbot
Certbot debe comprobar que el dominio es nuestro, para ello usa el puerto 80 (HTTP) o 443 (HTTPS), razón por la cual abrimos el puerto en el firewall
$ sudo ufw allow 80
Salida
Rule added
Rule added (v6)
Ejecutamos certbot en un servidor web temporal (--standalone) para obtener los certificados, en el ejemplo usamos el parametro ‘http’, para https use tls-sni (--preferred-challenges), e ingresamos el nombre de dominio (-d).
$ sudo certbot certonly --stantalone --preferred-challenges http -d entidad.gob.bo
Salida
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/
entidad.gob.bo
/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/
entidad.gob.bo
/privkey.pem
Your cert will expire on 2019-
10
-
01
. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Nota: Para la configuración automática de Apache o Nginx puede usar:
$ sudo cerbot --apache -d entidad.gob.bo
Ó
$ sudo cerbot --nginx -d entidad.gob.bo
1.3. Configurando la aplicación
Certbot descarga varios archivos relacionados al certificado:
$ sudo ls /etc/letsencrypt/live/entidad.gob.bo
Salida
cert.pem chain.pem fullchain.pem privkey.pem README
Detalles:
README: más información de estos archivos
privkey.pem: la llave privada del certificado, almacenar en un lugar secreto y seguro
fullchain.pem: el certificado, incluido con todos los certificados intermedios
Para más información al respecto ver: https://certbot.eff.org/docs/using.html#where-are-my-certificates
A continuación debe configurar su servidor de aplicación con los certificados de Lets Encrypt obtenidos.
1.4. Renovación automática del certificado
Los certificados de lets encrypt son válidos por 90 días, para hacer la renovación automáticamente se debe agregar un script a /etc/cron.d el cual se ejecutará 2 veces al día. Para completar la renovación es necesario aplicar los cambios editando el archivo:
$ sudo nano /etc/letsencrypt/renewal/entidad.gob.bo.conf
Y agregamos la opción renew_hook el cual nos permite realizar tareas posteriores a la obtención del certificado:
renew_hook = systemctl reload
<nombre del servicio>
Ejecutamos certbot para comprobar que no haya errores
$ sudo certbot renew --dry-run
2. Certificados Lets Encrypt en CentOS 7
Requisitos
- CentOS 7 server con usuario no root pero con privilegios de sudo.
- Nombre de dominio resolviendo a su servidor (ejemplo: entidad.gob.bo).
- El puerto 80 o 443 no debe estar en uso.
2.1. Instalando Certbot
Certbot es un paquete que se encuentra en Extra Packages for Enterprise Linux (EPEL). Habilitamos este repositorio en CentOS 7:
$ sudo yum --enablerepo=extras install epel-release
Instalamos certbot:
$ sudo yum install certbot
Verificamos la instalación obteniendo la versión de certbot
$ certbot --version
Salida
certbot 0.XX.0
2.2. Ejecutando Certbot
Certbot debe comprobar el dominio para obtener el certificado, para ello se habilita el puerto 80 (http) o 443 (https)
$ sudo firewall-cmd --add-service=http
$ sudo firewall-cmd --runtime-to-permanent
Sustituir http por https si se usa el puerto 443
Ejecutamos certbot en un servidor web temporal (--standalone) para obtener los certificados en este caso usamos el parametro ‘http’, para https use tls-sni (--preferred-challenges), e ingresamos el nombre de dominio (-d).
$ sudo certbot certonly --standalone --preferred-challenges http -d entidad.gob.bo
Salida
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/
entidad.gob.bo
/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/
entidad.gob.bo
/privkey.pem
Your cert will expire on 201
9
-10-0
1
. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Nota: Para la configuración automática de apache o nginx puede usar:
$ sudo cerbot --apache -d entidad.gob.bo
Ó
$ sudo cerbot --nginx -d entidad.gob.bo
2.3. Configurando la aplicación
Certbot ha descargado varios archivos relacionados al certificado:
$ sudo ls /etc/letsencrypt/live/entidad.gob.bo
Salida
cert.pem chain.pem fullchain.pem privkey.pem README
Detalles:
README: más información de estos archivos
privkey.pem: la llave privada del certificado, almacenar en un lugar secreto y seguro
fullchain.pem: el certificado, incluido con todos los certificados intermedios
Para más información al respecto ver: https://certbot.eff.org/docs/using.html#where-are-my-certificates
A continuación debe configurar su servidor de aplicación con los certificados de Lets Encrypt obtenidos.
2.4. Renovación automática del certificado
Los certificados de lets encrypt son solo válidos por 90 días, para hacer la renovación automáticamente certbot incluye systemd timer para verificar 2 veces al día el cual esta deshabilitado por defecto, y lo habilitamos:
$ sudo systemctl enable --now certbot-renew.timer
Salida
Created symlink from /etc/systemd/system/timers.target.wants/certbot-renew.timer to /usr/lib/systemd/system/certbot-renew.timer.
Verificamos el estado del servicio:
$ sudo systemctl status certbot-renew.timer
●
certbot-renew.timer - This is the timer to set the schedule for automated renewals
Loaded: loaded (/usr/lib/systemd/system/certbot-renew.timer; enabled; vendor preset: disabled)
Active: active (waiting) since Fri 2019-05-31 1
8
:10:10 UTC; 48s ago
2.5. Ejecutando tareas después de la renovación de certificados
Para completar la renovación es necesario aplicar los cambios editando el archivo:
$ sudo vi /etc/letsencrypt/renewal/entidad.gob.bo.conf
Y agregamos la opción renew_hook el cual nos permite realizar tareas posteriores a la obtención del certificado:
renew_hook = systemctl reload <nombre del servicio>
Ejecutamos certbot para comprobar que no haya errores
$ sudo certbot renew --dry-run