Cómo utilizar el modo independiente de Certbot para recuperar certificados SSL de Let’s Encrypt en Ubuntu 20.04

Introducción
Let’s Encrypt es un servicio que ofrece certificados SSL gratuitos a través de una API automatizada. El cliente de Let’s Encrypt más popular es Certbot de EFF .
Certbot ofrece una variedad de formas de validar su dominio, obtener certificados y configurar automáticamente Apache y Nginx. En este tutorial, analizaremos el modo independiente de Certbot y cómo usarlo para proteger otros tipos de servicios, como un servidor de correo o un agente de mensajes como RabbitMQ.
No entraremos en detalles sobre la configuración de SSL, pero cuando hayas terminado tendrás un certificado válido que se renueva automáticamente. Además, podrás recargar automáticamente tu servicio para recoger el certificado renovado.
Prerrequisitos
Antes de comenzar este tutorial, necesitarás:
- Un servidor Ubuntu 20.04 con un usuario no root, con sudo habilitado y una configuración de firewall básica, como se detalla en este tutorial de configuración de servidor Ubuntu 20.04 .
- Un nombre de dominio que apunta a su servidor. Si está utilizando un Droplet de DigitalOcean, puede lograrlo siguiendo nuestra documentación de Dominios y DNS . Este tutorial se utilizará
your_domain
en todo momento. - El puerto 80 o 443 no debe estar en uso en su servidor. Si el servicio que intenta proteger está en una máquina con un servidor web que ocupa ambos puertos, deberá utilizar un modo diferente, como el modo webroot de Certbot .
Paso 1: Instalación de Certbot
Certbot recomienda utilizar su paquete snap para la instalación. Los paquetes snap funcionan en casi todas las distribuciones de Linux, pero requieren que primero hayas instalado snapd para poder administrarlos. Ubuntu 20.04 viene con soporte para snaps de fábrica, por lo que puedes comenzar asegurándote de que tu núcleo snapd esté actualizado:
- sudo snap install core; sudo snap refresh core
Si estás trabajando en un servidor que anteriormente tenía instalada una versión anterior de certbot, debes eliminarla antes de continuar:
- sudo apt remove certbot
Después de esto, puedes instalar el certbot
paquete:
- sudo snap install --classic certbot
Por último, puedes vincular el certbot
comando desde el directorio de instalación de snap a tu ruta, de modo que podrás ejecutarlo con solo escribir certbot
. Esto no es necesario con todos los paquetes, pero los snaps tienden a ser menos intrusivos de manera predeterminada, por lo que no entran en conflicto con ningún otro paquete del sistema por accidente:
- sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ahora que tenemos Certbot instalado, ejecutémoslo para obtener nuestro certificado.
Paso 2: Ejecutar Certbot
Certbot debe responder a un desafío criptográfico emitido por la API Let’s Encrypt para demostrar que controlamos nuestro dominio. Para ello, utiliza puertos 80
(HTTP) o 443
(HTTPS). Abra los puertos correspondientes en su firewall:
- sudo ufw allow 443
OutputRule addedRule added (v6)
Ahora podemos ejecutar Certbot para obtener nuestro certificado. Usaremos la --standalone
opción para indicarle a Certbot que gestione el desafío usando su propio servidor web integrado. Por último, la -d
bandera se usa para especificar el dominio para el que estás solicitando un certificado. Puedes agregar múltiples -d
opciones para cubrir varios dominios en un certificado.
- sudo certbot certonly --standalone -d your_domain
Al ejecutar el comando, se le solicitará que ingrese una dirección de correo electrónico y que acepte los términos del servicio. Después de hacerlo, debería ver un mensaje que le indica que el proceso se realizó correctamente y dónde se almacenan sus certificados:
OutputIMPORTANT NOTES:Successfully received certificate.Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pemKey is saved at: /etc/letsencrypt/live/your_domain/privkey.pemThis certificate expires on 2022-02-10.These files will be updated when the certificate renews.Certbot has set up a scheduled task to automatically renew this certificate in the background.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -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
Ahora deberías tener tus certificados. En el siguiente paso, inspeccionaremos algunos de los archivos que descargamos y aprenderemos sobre su funcionalidad.
Paso 3: configuración de la aplicación
La configuración de su aplicación para SSL queda fuera del alcance de este artículo, ya que cada aplicación tiene diferentes requisitos y opciones de configuración, pero veamos lo que Certbot ha descargado para nosotros. Utilice ls
para enumerar el directorio que contiene nuestras claves y certificados:
- sudo ls /etc/letsencrypt/live/your_domain
Outputcert.pem chain.pem fullchain.pem privkey.pem README
El README
archivo de este directorio contiene más información sobre cada uno de estos archivos. Lo más frecuente es que solo necesites dos de estos archivos:
privkey.pem
: Esta es la clave privada del certificado. Debe mantenerse segura y en secreto, por lo que la mayor parte del directorio tiene permisos muy restrictivos y solo el usuario root/etc/letsencrypt
puede acceder a él. La mayoría de las configuraciones de software se referirán a esto como algo similar a o .ssl-certificate-key
ssl-certificate-key-file
fullchain.pem
:Este es nuestro certificado, incluido con todos los certificados intermedios. La mayoría de los programas utilizarán este archivo para el certificado real y harán referencia a él en su configuración con un nombre como “certificado-ssl”.
Para obtener más información sobre los demás archivos presentes, consulte la sección “[¿Dónde están mis certificados?https://eff-certbot.readthedocs.io/en/stable/using.html#where-are-my-certificates)” de la documentación de Certbot.
Algunos programas necesitarán sus certificados en otros formatos, en otras ubicaciones o con otros permisos de usuario. Lo mejor es dejar todo en el letsencrypt
directorio y no cambiar ningún permiso (de todos modos, los permisos se sobrescribirán al renovarlos), pero a veces eso no es una opción. En ese caso, deberá escribir un script para mover archivos y cambiar los permisos según sea necesario. Este script deberá ejecutarse siempre que Certbot renueve los certificados, de lo que hablaremos a continuación.
Paso 4: Cómo gestionar las renovaciones automáticas de Certbot
Los certificados de Let’s Encrypt solo son válidos durante noventa días. Esto es para alentar a los usuarios a automatizar el proceso de renovación de sus certificados. El certbot
paquete que instalamos se encarga de esto por nosotros agregando un script de renovación a /etc/cron.d
. Este script se ejecuta dos veces al día y renovará cualquier certificado que esté dentro de los treinta días posteriores a su vencimiento.
Dado que nuestros certificados se renuevan automáticamente, aún necesitamos una forma de ejecutar otras tareas después de una renovación. Necesitamos al menos reiniciar o recargar nuestro servidor para recoger los nuevos certificados y, como se mencionó en el Paso 3, es posible que debamos manipular los archivos de certificado de alguna manera para que funcionen con el software que estamos usando. Este es el propósito de renew_hook
la opción de Certbot.
Para agregar un certificado renew_hook
, actualizamos el archivo de configuración de renovación de Certbot. Certbot recuerda todos los detalles de cómo obtuvo el certificado por primera vez y se ejecutará con las mismas opciones al momento de la renovación. Solo necesitamos agregar nuestro gancho. Abra el archivo de configuración con su editor favorito:
- sudo nano /etc/letsencrypt/renewal/your_domain.conf
Se abrirá un archivo de texto con algunas opciones de configuración. Puede agregar un enlace en la última línea que recargará todos los servicios web y hará que utilicen el certificado renovado:
tu_dominio^.conf”/etc/letsencrypt/renewal/^tu_dominio^.conf
renew_hook = systemctl reload your_service
Actualiza el comando anterior a lo que necesites ejecutar para recargar tu servidor o ejecutar tu script de manipulación de archivos personalizado. Por lo general, en Ubuntu, lo usarás principalmente systemctl
para recargar un servicio. Guarda y cierra el archivo, luego ejecuta una ejecución en seco de Certbot para asegurarte de que la sintaxis sea correcta:
- sudo certbot renew --dry-run
Si no ve ningún error, ya está todo listo. Certbot está configurado para renovarse cuando sea necesario y ejecutar los comandos necesarios para que su servicio utilice los archivos nuevos.
Conclusión
En este tutorial, instalamos el cliente Let’s Encrypt de Certbot, descargamos un certificado SSL usando el modo independiente y habilitamos las renovaciones automáticas con ganchos de renovación. Esto debería brindarle un buen comienzo para usar certificados Let’s Encrypt con servicios distintos a su servidor web habitual.
Para obtener más información, consulte la documentación de Certbot .
Deja una respuesta