Base de conocimientos

1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!

Renovar un certificado "comodín" mediante un desafío DNS

Esta guía explica cómo generar y renovar automáticamente un certificado wildcard mediante un desafío DNS utilizando Certbot y el plugin dns-infomaniak.

 

1. Instalación de las herramientas necesarias

El plugin DNS Infomaniak no está incluido por defecto. Para evitar el error plugin does not appear to be installed, instale certbot y su extensión siguiendo las instrucciones oficiales.

Asegúrese de seleccionar la pestaña Wildcard en el sitio de Certbot después de elegir su sistema.

 

2. Generación manual inicial

Ejecute este comando para iniciar la primera generación del certificado:

certbot certonly --manual \
-d *.example.com \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory

 

3. Validación del desafío DNS (Registro TXT)

Para demostrar que posee el dominio, acceda a su Manager Infomaniak y cree el registro TXT siguiente:

  • Nombre: _acme-challenge
  • Valor: (el proporcionado por el comando Certbot)

 

4. Preparación de la API de Infomaniak

Para automatizar el proceso, genere un token de API con el ámbito domain en su interfaz de gestión. Este token permitirá que el script actualice sus DNS automáticamente.

 

5. Script de autenticación (infomaniak-auth.sh)

Cree el archivo /root/infomaniak-auth.sh. Este script será llamado por Certbot durante el renovación:

#!/bin/bash
# API Token for Infomaniak
INFOMANIAK_API_TOKEN="YOUR_API_TOKEN_HERE"
# Update DNS record via Infomaniak API plugin
/usr/bin/certbot \
  --authenticator dns-infomaniak \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d "$CERTBOT_DOMAIN" \
  --agree-tos

Haga que el script sea ejecutable:

chmod +x /root/infomaniak-auth.sh

 

6. Script de limpieza (infomaniak-clean.sh)

Cree el archivo /root/infomaniak-clean.sh para finalizar el procedimiento:

#!/bin/bash
# Optional: Cleanup operations after challenge
exit 0

Haga que el script sea ejecutable:

chmod +x /root/infomaniak-clean.sh

 

7. Configuración de la renovación automática

Edite o cree el archivo de configuración siguiente: /etc/letsencrypt/renewal/example.com.conf.

cert = /etc/letsencrypt/live/example.com/cert.pem
privkey = /etc/letsencrypt/live/example.com/privkey.pem
chain = /etc/letsencrypt/live/example.com/chain.pem
fullchain = /etc/letsencrypt/live/example.com/fullchain.pem
[renewalparams]
authenticator = manual
manual_auth_hook = /root/infomaniak-auth.sh
manual_cleanup_hook = /root/infomaniak-clean.sh
server = https://acme-v02.api.letsencrypt.org/directory
pref_challs = dns-01
account = YOUR_ACCOUNT_ID
key_type = rsa

 

8. Prueba y Automatización (Cron)

Antes de automatizarlo, verifique que todo funcione correctamente con una simulación:

certbot renew --dry-run

Si la prueba tiene éxito, agregue esta tarea Cron para verificar el renovación cada X días:

0 0 */30 * * /usr/bin/certbot renew --quiet --config /etc/letsencrypt/renewal/example.com.conf

Modifique 30 días arriba según la frecuencia deseada. El cron utilizará automáticamente:

  • el archivo domain.tld.conf
  • el script de autenticación infomaniak-auth.sh
  • el plugin dns-infomaniak

¿Le ha sido útil esta FAQ?