Tutorial paso a paso sobre cómo usar el certbot de Let's Encrypt para obtener un certificado SSL gratuito y cómo renovarlo automáticamente.
Sobre todo, Let's Encrypt es de código abierto y es completamente gratuito. Permite que cualquier persona instale un certificado SSL de confianza en su sitio web y se beneficie de la seguridad mejorada que proporciona una conexión cifrada. A diferencia de un certificado SSL autofirmado, un certificado de Let's Encrypt se reconoce como totalmente verificado y muestra el icono de un candado en la barra de direcciones de los navegadores web modernos.
Cómo funciona Let's Encrypt
Antes de emitir un certificado, Let's Encrypt valida la propiedad de su dominio. El cliente de Let's Encrypt, que se ejecuta en su host, crea un archivo temporal (un token) con la información necesaria. Luego, el servidor de validación realiza una solicitud HTTP para recuperar el archivo y valida el token, lo que verifica que el registro DNS de su dominio se resuelva en el servidor que ejecuta el cliente Let's Encrypt. Por lo tanto, los comandos que se muestran a continuación deben ejecutarse en el servidor que servirá a su dominio para el que está emitiendo el certificado.
1. Instalando cerbot
Let's Encrypt tiene un instalador automatizado llamado certbot
. El primer paso para usar Let's Encrypt para obtener un certificado SSL es instalarlo en su servidor.
Ubuntu:
sudo apt install certbot python3-certbot-nginx
Debian:
sudo apt install certbot
CentOS:
sudo yum install epel-release
sudo yum install certbot-nginx
2. Obtención de certificados Let's Encrypt
¡Importante! Antes de emitir un certificado SSL gratuito de Let's Encrypt, debe detener el servicio de su servidor web. De lo contrario, obtendrá el siguiente error:
Problem binding to port 80: Could not bind to IPv4 or IPv6
Si usa Nginx, ejecute:
sudo systemctl stop nginx
Ahora podemos pasar a la generación del certificado SSL gratuito de Let’s Encrypt:
sudo certbot certonly --standalone --preferred-challenges http -d my-domain.com
La opción -d toma un nombre de dominio. Puede usar múltiples -d
opciones en el comando único. Por ejemplo:
sudo certbot certonly --standalone --preferred-challenges http -d my-domain.com -d www.my-domain.com
Si es la primera vez que ejecuta certbot
, se le pedirá que ingrese una dirección de correo electrónico y acepte los términos del servicio. Después de hacerlo, certbot
se comunicará con el servidor de Let's Encrypt, luego ejecutará un desafío para verificar que usted controla el dominio para el que está solicitando un certificado.
Si tiene éxito, certbot
terminará con un mensaje que le indicará que el proceso fue exitoso y dónde están almacenados sus certificados.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/my-domain.com/fullchain.pem. Your cert will
expire on 2022-08-08. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
"certonly" option. 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
3. Verificar certificados
Enumere sus certificados guardados en /etc/letsencrypt/live/my-domain.com
directorio.
ls -l /etc/letsencrypt/live/my-domain.com/
total 4
-rw-r--r-- 1 root root 692 Mar 10 08:24 README
lrwxrwxrwx 1 root root 37 Mar 10 08:24 cert.pem -> ../../archive/my-domain.com/cert1.pem
lrwxrwxrwx 1 root root 38 Mar 10 08:24 chain.pem -> ../../archive/my-domain.com/chain1.pem
lrwxrwxrwx 1 root root 42 Mar 10 08:24 fullchain.pem -> ../../archive/my-domain.com/fullchain1.pem
lrwxrwxrwx 1 root root 40 Mar 10 08:24 privkey.pem -> ../../archive/my-domain.com/privkey1.pem
4. Modificar la configuración del servidor web
Para que su servidor web utilice el certificado SSL gratuito de Let's Encrypt, debe especificarlo en su configuración. Por ejemplo, si usa Nginx, debe agregar el siguiente bloque al archivo de configuración de su dominio /etc/nginx/sites-enabled/my-domain.conf
server {
listen 443;
server_name my-domain.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/my-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain.com/privkey.pem;
}
Eso es todo. Todas las cosas están listas y hechas. Ahora solo necesita iniciar su servidor web:
sudo systemctl start nginx
Finalmente, puede verificar que su sitio web ahora está protegido por SSL. Simplemente abra el sitio web en el navegador y compruebe si el icono del candado está disponible.
5. Renovar automáticamente los certificados de Let's Encrypt
Los certificados tienen una validez de 90 días. Se pueden renovar 30 días antes de su vencimiento. Aquí agregamos un trabajo cron que los renovará automáticamente.
Así que primero abra el archivo crontab :
sudo crontab -e
después de eso, agregue el certbot
comando para ejecutar semanalmente:
@weekly certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" --renew-hook "systemctl reload nginx" --quiet
Conclusión
En este tutorial, vimos cómo instalar un certificado SSL gratuito de Let's Encrypt para proteger un sitio web. Además, puede consultar el sitio web oficial de Let's Encrypt para obtener más información y detalles.