Base de conocimientos

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

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

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

 

1. Instalación del plugin DNS Infomaniak

Los plugins DNS no se instalan por defecto con Certbot. Para instalar correctamente certbot y el plugin dns-infomaniak, para evitar un posible error The requested dns-infomaniak plugin does not appear to be installed consulte las instrucciones oficiales de Certbot y elija el Software → Sistema y luego consulte la pestaña Wildcard.

 

2. Generar el certificado wildcard

Desde un Terminal, ejecute el siguiente comando Certbot para generar el certificado manualmente:

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

 

3. Crear el registro TXT

Desde la gestión de dominios del Manager Infomaniak, cree el registro TXT solicitado para _acme_challenge.domain.tld.

 

4. Crear el archivo de configuración de renovación

Desde un Terminal, cree o edite el archivo: /etc/letsencrypt/renewal/domain.tld.conf. Ejemplo de configuración recomendada:

cert = /etc/letsencrypt/live/domain.tld/cert.pem
privkey = /etc/letsencrypt/live/domain.tld/privkey.pem
chain = /etc/letsencrypt/live/domain.tld/chain.pem
fullchain = /etc/letsencrypt/live/domain.tld/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 = xxxxx
key_type = rsa

Algunos errores provienen de archivos generados automáticamente por Certbot que contienen campos obsoletos o incorrectos (version = ..., cert-path = ..., etc.). Siempre vuelva a crear el archivo de renewal siguiendo el ejemplo anterior.

 

5. Crear el script infomaniak-auth.sh

Desde la gestión de API del Manager Infomaniak, cree un token de API Infomaniak con el ámbito domain, que reemplazará XXXXXXX en el script a continuación.

El archivo indicado en su configuración debe corresponder exactamente al nombre real del script. Ejemplo: si usa infomaniak-auth.sh en la configuración, no cree infomaniak-auth-domain.xyz.sh.

Desde un Terminal, cree el archivo /root/infomaniak-auth.sh sin tabulaciones al final de la línea (ellas provocan errores en Bash) con:

#!/bin/bash
INFOMANIAK_API_TOKEN="XXXXXXX"
# Ajout de l'enregistrement TXT via le plugin DNS Infomaniak
/usr/bin/certbot \
  --authenticator dns-infomaniak \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d "$CERTBOT_DOMAIN" \
  --agree-tos

El script debe ser ejecutable:

chmod +x /root/infomaniak-auth.sh

 

6. Crear un script de limpieza

Cree el archivo /root/infomaniak-clean.sh

#!/bin/bash
# Optionnel : suppression de l'entrée DNS temporaire
exit 0

El script debe ser ejecutable:

chmod +x /root/infomaniak-clean.sh

 

7. Probar la renovación

Antes de usar un cron, siempre pruebe con este comando que mostrará los posibles errores (script no encontrado, nombre de archivo incorrecto, permisos faltantes, plugin ausente, etc.):

certbot renew --dry-run

 

8. Configurar una tarea cron

0 0 */30 * * /usr/bin/certbot renew --quiet --config /etc/letsencrypt/renewal/domain.tld.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?