Cómo utilizar el modo independiente de Certbot para recuperar certificados SSL de Let's Encrypt en Debian 10

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Instalación de Certbot
  • Paso 2: Ejecutar Certbot
  • Paso 3: configuración de la aplicación
  • Paso 4: Cómo gestionar las renovaciones automáticas de Certbot
  • Conclusió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 el cliente 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 Debian 10, un usuario no root con sudoprivilegios y un firewall básico, como se detalla en este tutorial de configuración del servidor Debian 10.
    • Un nombre de dominio apuntando a su servidor, lo cual puede lograr siguiendo esta documentación sobre la creación de registros DNS en DigitalOcean.
    • 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 o el modo de desafío basado en DNS.

    Paso 1: Instalación de Certbot

    Debian 10 incluye el cliente Certbot en su repositorio predeterminado y debería estar lo suficientemente actualizado para un uso básico. Si necesita realizar desafíos basados ​​en DNS o usar otras funciones más nuevas de Certbot, debe instalarlo desde el buster-backportsrepositorio según las instrucciones de la documentación oficial de Certbot.

    Actualice su lista de paquetes:

    1. sudo apt update

    Utilice aptpara instalar el certbotpaquete:

    1. sudo apt install certbot

    Puede probar su instalación solicitando certbotque le muestre su número de versión:

    1. certbot --version
    Outputcertbot 0.31.0

    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 los puertos 80(HTTP) o 443(HTTPS). Abra el puerto correspondiente en su firewall:

    1. sudo ufw allow 80

    Sustituya 443lo anterior si ese es el puerto que está utilizando. ufwemitirá una confirmación de que se agregó su regla:

    OutputRule addedRule added (v6)

    Ahora podemos ejecutar Certbot para obtener nuestro certificado. Usaremos la --standaloneopción para indicarle a Certbot que maneje el desafío usando su propio servidor web integrado. La --preferred-challengesopción le indica a Certbot que use port 80o port 443. Si usa port 80, usará la --preferred-challenges httpopción. Para port 443, use --preferred-challenges tls-sni. Finalmente, usaremos la -dbandera para especificar el dominio para el que estamos solicitando un certificado. Puede agregar múltiples -dopciones para cubrir múltiples dominios en un certificado.

    Usaremos la --preferred-challenges httpopción para demostrarlo, pero debes usar la opción que tenga sentido para tu caso de uso. Ejecuta el siguiente comando con tus opciones preferidas para obtener tu certificado:

    1. sudo certbot certonly --standalone --preferred-challenges http -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: - Congratulations! Your certificate and chain have been saved at:   /etc/letsencrypt/live/your_domain/fullchain.pem   Your key file has been saved at:   /etc/letsencrypt/live/your_domain/privkey.pem   Your cert will expire on 2019-08-28. 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

    Ya tenemos nuestros certificados. Veamos qué hemos descargado y cómo utilizar los archivos con nuestro software.

    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 lspara enumerar el directorio que contiene sus claves y certificados:

    1. sudo ls /etc/letsencrypt/live/your_domain

    Verá el siguiente resultado:

    Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

    El READMEarchivo 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 o .ssl-certificate-keyssl-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 ssl-certificate.

    Para obtener más información sobre los demás archivos presentes, consulte la sección ¿Dónde están mis certificados? de la documentación de Certbot.

    Algunos programas necesitarán sus certificados en otros formatos o ubicaciones, o con otros permisos de usuario. Es mejor dejar todo en el letsencryptdirectorio y no cambiar ningún permiso allí (de todos modos, los permisos se sobrescribirán al renovarlos), pero a veces esa no es una opción. En ese caso, necesitará 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 certificados. El certbotpaquete 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_hookla opción de Certbot.

    Para agregar un certificado renew_hook, debemos actualizar 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:

    1. sudo nano /etc/letsencrypt/renewal/your_domain.conf

    Se abrirá un archivo de texto con algunas opciones de configuración. Agregue su gancho en la última línea. En este caso, estamos usando un ejemplo que recargaría un rabbitmqservicio:

    /etc/letsencrypt/renewal/tu_dominio.conf

    renew_hook = systemctl reload rabbitmq

    Actualice el comando anterior a lo que necesite ejecutar para recargar su servidor o ejecutar su script de manipulación de archivos personalizado. En Debian, normalmente lo usará systemctlpara recargar un servicio.

    Guarde y cierre el archivo, luego ejecute una ejecución en seco de Certbot para asegurarse de que la sintaxis sea correcta:

    1. 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.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion