Cómo obtener certificados SSL Let's Encrypt mediante la validación de DNS de Certbot CloudFlare

Como Obtener Certificados Ssl Let S Encrypt Mediante La Validacion De Dns De Certbot Cloudflare



Certbot es un cliente ACME para la autoridad de certificación (CA) Let's Encrypt. Se utiliza para generar un certificado SSL Let's Encrypt y renovarlo automáticamente. De forma predeterminada, Certbot utiliza el desafío Let's Encrypt HTTP-01 para verificar la propiedad del dominio y emitir un certificado SSL para el dominio. Pero el desafío HTTP-01 no funcionará a menos que tenga una dirección IP pública y se pueda acceder a su computadora desde Internet. Por lo tanto, si desea utilizar los certificados SSL de Let's Encrypt para su red doméstica o privada, debe utilizar el desafío DNS-01. Cuando se utiliza el desafío DNS-01, Let's Encrypt verifica la propiedad del dominio utilizando el servidor DNS del dominio. Por tanto, también funciona para redes privadas.

Para obtener una explicación detallada sobre cómo funciona el desafío Let's Encrypt DNS-01 (o validación de DNS), lea el artículo titulado ¿Qué es el desafío Let's Encrypt DNS-01 y cómo usarlo para obtener los certificados SSL?

En este artículo, le mostraremos cómo utilizar la validación DNS de Let's Encrypt para obtener un certificado SSL para su nombre de dominio utilizando el complemento DNS Certbot y Certbot CloudFlare.







Tema de contenidos:

  1. Administrar su dominio con CloudFlare DNS
  2. Instalación del complemento Certbot y Certbot CloudFlare en Ubuntu/Debian
  3. Instalación del complemento Certbot y Certbot CloudFlare en Fedora
  4. Instalación del complemento Certbot y Certbot CloudFlare en RHEL/AlmaLinux/Rocky Linux/CentOS Stream
  5. Comprobar si los complementos Certbot y Certbot CloudFlare están instalados correctamente
  6. Generando un token API de CloudFlare
  7. Almacenamiento seguro del token API de CloudFlare en la computadora/servidor
  8. Generación de un certificado SSL mediante la validación de DNS de Certbot CloudFlare
  9. Listado de certificados SSL Let's Encrypt utilizando Certbot
  10. Renovación de los certificados SSL Let's Encrypt mediante Certbot
  11. Conclusión
  12. Referencias

Administrar su dominio con CloudFlare DNS

Para obtener un certificado SSL de Let's Encrypt utilizando la validación de DNS de CloudFlare, debe tener una cuenta de CloudFlare y su dominio debe utilizar el DNS de CloudFlare. Puede crea una cuenta CloudFlare gratis y el servicio DNS de CloudFlare también es de uso gratuito.



Para administrar su dominio con CloudFlare DNS, puede hacer una de las siguientes cosas:



  • Registre su dominio desde CloudFlare
  • Transfiera su dominio a CloudFlare
  • Cambie el servidor de nombres DNS de su nombre de dominio al servidor de nombres DNS de CloudFlare desde el panel de control de su registrador de dominios

No es necesario comprar un dominio de CloudFlare ni transferir un dominio a CloudFlare para administrarlo con el servicio DNS de CloudFlare. Puede simplemente cambiar el servidor de nombres de su dominio al servidor de nombres DNS de CloudFlare desde el panel de control de su registrador de dominios (donde compró el dominio) y administrar su dominio desde CloudFlare. Para obtener más información sobre cómo cambiar el servidor de nombres de su dominio al servidor de nombres DNS de CloudFlare, lea este artículo.





Instalación del complemento Certbot y Certbot CloudFlare en Ubuntu/Debian

Los complementos Certbot y Certbot CloudFlare están disponibles en el repositorio de paquetes oficial de Ubuntu/Debian. Entonces, puedes instalarlos en Ubuntu/Debian muy fácilmente.

Primero, actualice la caché del repositorio de paquetes APT con el siguiente comando:



$ sudo actualización adecuada

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para instalar el complemento DNS Certbot y Certbot CloudFlare, ejecute el siguiente comando:

$ sudo apto instalar certbot python3-certbot-dns-cloudflare

Para confirmar la instalación, presione “Y” y luego presione .

Se están instalando los complementos DNS de Certbot y Certbot CloudFlare. Tarda un poco en completarse.

En este punto, se deben instalar los complementos DNS de Certbot y Certbot CloudFlare.

Instalación del complemento Certbot y Certbot CloudFlare en Fedora

Los complementos Certbot y Certbot CloudFlare están disponibles en el repositorio de paquetes oficial de Fedora y se pueden instalar en Fedora muy fácilmente.

Primero, actualice la base de datos del paquete DNF con el siguiente comando:

$ sudo dnf crear caché

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para instalar el complemento DNS Certbot y Certbot CloudFlare en Fedora, ejecute el siguiente comando:

$ sudo dnf instalar certbot python3-certbot-dns-cloudflare

Para confirmar la instalación, presione “Y” y luego presione .

  Una captura de pantalla de una computadora Descripción generada automáticamente

Se están instalando los complementos DNS de Certbot y Certbot CloudFlare. Tarda un poco en completarse.

  Una captura de pantalla de un programa informático Descripción generada automáticamente

En este punto, el complemento DNS Certbot y Certbot CloudFlare debe estar instalado en Fedora.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Instalación del complemento Certbot y Certbot CloudFlare en RHEL/AlmaLinux/Rocky Linux/CentOS Stream

El complemento DNS de Certbot CloudFlare no está disponible en los repositorios de paquetes oficiales de RHEL/AlmaLinux/Rocky Linux/CentOS Stream. El complemento DNS de Certbot CloudFlare está disponible en el repositorio de paquetes EPEL. Puede habilitar el repositorio de paquetes EPEL en RHEL/AlmaLinux/Rocky Linux/CentOS Stream e instalar el complemento DNS Certbot CloudFlare desde allí.

Una vez que haya habilitado el repositorio de paquetes EPEL, actualice el caché de la base de datos DNF con el siguiente comando:

$ sudo dnf crear caché

  Una captura de pantalla de una computadora Descripción generada automáticamente

Luego, instale el complemento DNS Certbot y Certbot CloudFlare en su sistema RHEL/AlmaLinux/Rocky Linux/CentOS Stream con el siguiente comando:

$ sudo dnf instalar certbot python3-certbot-dns-cloudflare

Para confirmar la instalación, presione “Y” y luego presione .

  Una captura de pantalla de una computadora Descripción generada automáticamente

Se están instalando los complementos DNS de Certbot y Certbot CloudFlare. Tarda un poco en completarse.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para aceptar la clave GPG del repositorio EPEL, presione “Y” y luego presione .

  Una captura de pantalla de una computadora Descripción generada automáticamente

En este punto, se deben instalar los complementos DNS de Certbot y Certbot CloudFlare.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Comprobar si los complementos Certbot y Certbot CloudFlare están instalados correctamente

Para verificar si Certbot está instalado en su computadora, ejecute el siguiente comando:

$ robot certificado --versión

Si Certbot está instalado, el comando debería imprimir el número de versión del Certbot instalado en su computadora.

Como puede ver, tenemos Certbot 2.1.0 instalado en nuestra máquina Debian.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para verificar si el complemento DNS de Certbot CloudFlare está instalado en su computadora, ejecute el siguiente comando:

$ sudo complementos de certbot

Si el complemento DNS de Certbot CloudFlare está instalado, debería encontrar 'dns-cloudflare' en la lista de complementos como se marca en la siguiente captura de pantalla:

  Una captura de pantalla de una computadora Descripción generada automáticamente

Generando un token API de CloudFlare

Para verificar la propiedad del dominio, Certbot necesita agregar un registro TXT en el dominio administrado por el servidor DNS de CloudFlare. Para eso, Certbot necesita acceso al token API de CloudFlare. Puede crear un token API para su dominio desde el panel de CloudFlare.

Primero, inicie sesión en su cuenta CloudFlare. Luego, haz clic en el ícono de tu perfil.

> Mi perfil desde la esquina superior derecha de la página.

Navegue a la sección 'Tokens API' [1] y haga clic en 'Crear token' [2] .

  Una captura de pantalla de una computadora Descripción generada automáticamente

Haga clic en 'Usar plantilla' en la sección 'Editar DNS de zona'.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Desde la sección 'Permiso', permita el permiso 'Editar' a la 'Zona DNS' seleccionando las opciones marcadas en los menús desplegables.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Si administra varios dominios con CloudFlare, puede permitir la modificación de una 'zona específica' desde la sección 'Recurso de zona'. Permitir que un token de API modifique solo una zona es más seguro que permitir que el token de API modifique todas las zonas. Esto se debe a que si el token API se ve comprometido, la superficie de ataque será menor y se producirá menos daño.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Si desea utilizar una única clave API para modificar todos sus dominios administrados por CloudFlare, seleccione 'Todas las zonas' en la sección 'Recurso de zona'.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Una vez que haya terminado de configurar su token API, haga clic en 'Continuar al resumen'.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Se mostrará un resumen de las acciones que puede realizar en sus dominios administrados por CloudFlare con el token API. Haga clic en 'Crear token'.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Se debe crear un token API. Copie el token API en algún lugar seguro para no perderlo. Una vez que abandone esta página, no podrá volver a encontrar este token API. Tienes que generar un nuevo token API en caso de que lo pierdas:

LyPCAcOBygX1UMHvcsvBFo41aItm2cCVxnjloZj5

  Una captura de pantalla de una computadora Descripción generada automáticamente

Almacenamiento seguro del token API de CloudFlare en la computadora/servidor

Certbot necesita usar el token API de CloudFlare para agregar un nuevo registro TXT para su dominio en el servidor DNS de CloudFlare. Por lo tanto, debe almacenar el token API de CloudFlare en su computadora/servidor. Almacenar el token de API sin garantizar los permisos de acceso a archivos adecuados puede permitir que otros programas/usuarios tengan acceso al token de API. Esto no es lo que desea por razones de seguridad. En esta sección, le mostraremos cómo almacenar de forma segura el token API de CloudFlare en el sistema de archivos.

Primero, cree un directorio (es decir, ~/.secrets/certbot) donde desee almacenar la clave API de CloudFlare de la siguiente manera:

$ mkdir -pv ~ / .misterios / robot certificado

  Una captura de pantalla de una computadora Descripción generada automáticamente

Cree un archivo “cloudflare.ini” en el directorio recién creado (es decir, ~/.secrets/certbot) y ábralo con su editor de texto favorito (es decir, nano) de la siguiente manera:

$ nano ~ / .misterios / robot certificado / nubeflare.ini

Escriba la siguiente línea en el archivo “cloudflare.ini” y presione + X seguido de “Y” y para guardarlo (si estás usando el editor de texto nano).

dns_cloudflare_api_token = < su-token-api-cloudflare >

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para garantizar un permiso de acceso adecuado para el archivo 'cloudflare.ini', ejecute los siguientes comandos para asegurarse de que solo el usuario root tenga acceso de lectura y escritura al archivo:

$ sudo chown raíz: raíz ~ / .misterios / robot certificado / nubeflare.ini

$ sudo chmod 0600 ~ / .misterios / robot certificado / nubeflare.ini

Como puede ver, sólo el usuario root tiene permisos de lectura y escritura en el archivo “cloudflare.ini”.

$ es -lh ~ / .misterios / robot certificado / nubeflare.ini

Otros usuarios que intenten leer el archivo 'cloudflare.ini' recibirán un mensaje de error 'Permiso denegado'.

$ gato ~ / .misterios / robot certificado / nubeflare.ini

  Una captura de pantalla de una computadora Descripción generada automáticamente

Generación de un certificado SSL mediante la validación de DNS de Certbot CloudFlare

Para generar un certificado SSL Let's Encrypt para el nombre de dominio comodín '*.nodekite.com' utilizando la validación DNS de CloudFlare, ejecute el comando cerbot de la siguiente manera:

$ sudo certbot ciertamente --dns-cloudflare --dns-cloudflare-credenciales ~ / .misterios / robot certificado / nubeflare.ini -d * .nodekite.com

Para generar un certificado SSL Let's Encrypt para los nombres de dominio “nodekite.com” y “www.nodekite.com” using the CloudFlare DNS validation, use the “-d” option of the certbot command for each domain name as follows:

$ sudo certbot ciertamente --dns-cloudflare --dns-cloudflare-credenciales ~ / .misterios / robot certificado / nubeflare.ini -d www.nodekite.com -d nodekite.com

Si los cambios de DNS tardan mucho en propagarse a los servidores de nombres DNS populares en todo el mundo, puede usar la opción “–dns-cloudflare-propagation-segundos” de Certbot para establecer la cantidad de segundos que desea que Certbot espere antes de la validación de DNS. es interpretado.

$ sudo certbot ciertamente --dns-cloudflare --dns-cloudflare-credenciales ~ / .misterios / robot certificado / nubeflare.ini --dns-cloudflare-propagación-segundos 60 -d * .nodekite.com

Una vez que ejecute el comando Certbot, se le pedirá que ingrese su dirección de correo electrónico. Escriba su dirección de correo electrónico y presione continuar.

Presione “Y” y luego presione aceptar los 'Términos de servicio' de Let's Encrypt.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Presione “Y” y luego presione .

  Una captura de pantalla de un programa informático Descripción generada automáticamente

Se está emitiendo un certificado SSL de Let's Encrypt. Tarda un poco en completarse.

  Una captura de pantalla de una descripción de error de computadora generada automáticamente

En este punto, se emite el certificado SSL de Let's Encrypt. Debe mostrarse la ruta completa donde se guardan los archivos del certificado SSL. También debe mostrarse la fecha de caducidad del certificado SSL.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Listado de certificados SSL Let's Encrypt utilizando Certbot

Puede enumerar todos los certificados SSL de Let's Encrypt que generó usando Certbot con el siguiente comando:

$ sudo certificados certbot

Como puede ver, aparece el certificado SSL Let's Encrypt generado para el dominio 'nodekite.com'. [1] . Se emite un certificado SSL comodín para 'nodekite.com' [2] nombre de dominio. La fecha de vencimiento del certificado es 2024-03-20 (válido por 89 días) [3] . La ruta del certificado y la clave privada también se enumeran aquí [4] .

  Una captura de pantalla de una computadora Descripción generada automáticamente

Certbot almacena todos los certificados SSL que generó para sus dominios en el directorio “/etc/letsencrypt/live” en su carpeta respectiva.

$ sudo es -Rlh / etc. / vamos a cifrar / vivir /

  Una captura de pantalla de una computadora Descripción generada automáticamente

Renovación de los certificados SSL Let's Encrypt mediante Certbot

Certbot renueva automáticamente todos los certificados SSL de Let's Encrypt que generó mediante la validación DNS de CloudFlare.

Para probar si la función de renovación automática de los certificados SSL de Let's Encrypt funciona, ejecute el siguiente comando:

$ sudo renovar certbot --ejecución en seco

La acción de renovación automática se simula para cada uno de los certificados SSL de Let's Encrypt que generó.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Si las pruebas tienen éxito, serás felicitado. Una prueba exitosa significa que los certificados SSL se renovarán automáticamente antes de que caduquen. No tendrás que hacer nada más.

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para que funcione la función de renovación automática de Certbot, el temporizador systemd “cerbot.timer” debe estar habilitado y activo en su computadora/servidor.

Puede verificar si el temporizador systemd “cerbot.timer” está habilitado y activo con el siguiente comando:

$ sudo estado systemctl certbot.timer

Como puede ver, el temporizador systemd “certbot.timer” está habilitado (se inicia automáticamente en el momento del arranque) [1] y activo [2] . Certbot comprueba si es necesario renovar algún certificado SSL después de solo 11 minutos (según la siguiente captura de pantalla) y renueva los certificados SSL que están a punto de caducar. [3] .

  Una captura de pantalla de una computadora Descripción generada automáticamente

Para comprobar manualmente si algún certificado SSL está a punto de caducar y renovar los certificados SSL que caducan, ejecute el siguiente comando:

$ sudo renovar certbot

En nuestro caso, ningún certificado SSL está a punto de caducar. Entonces, Certbot no intentó renovar ningún certificado SSL.

Para obligar a Certbot a renovar el certificado SSL de un dominio específico (digamos *.nodekite.com), ejecute el siguiente comando:

$ sudo certbot ciertamente --forzar-renovar -d * .nodekite.com

Presione “1” y presione para seleccionar la primera opción (para la validación de DNS usando CloudFlare DNS).

  Una captura de pantalla de una computadora Descripción generada automáticamente

El certificado SSL debe renovarse.

Conclusión

Para obtener un certificado SSL de Let's Encrypt mediante la validación DNS de CloudFlare mediante Certbot, necesita acceso al token API de CloudFlare. En este artículo, le mostramos cómo crear un token API de CloudFlare para su dominio y almacenarlo de forma segura en su computadora/servidor para que pueda acceder a él con Certbot cuando sea necesario. También le mostramos cómo instalar Certbot y el complemento DNS Certbot CloudFlare en las distribuciones de Linux más populares. Le mostramos cómo generar certificados SSL comodín de Let's Encrypt, así como certificados SSL para dominios individuales utilizando la validación DNS de Certbot y CloudFlare. Finalmente, le mostramos cómo renovar los certificados SSL de Let's Encrypt usando Certbot de forma automática y manual.

Referencias: