1000 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/directory3. 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 = rsaAlgunos 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-tosEl script debe ser ejecutable:
chmod +x /root/infomaniak-auth.sh6. Crear un script de limpieza
Cree el archivo /root/infomaniak-clean.sh
#!/bin/bash
# Optionnel : suppression de l'entrée DNS temporaire
exit 0El script debe ser ejecutable:
chmod +x /root/infomaniak-clean.sh7. 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-run8. Configurar una tarea cron
0 0 */30 * * /usr/bin/certbot renew --quiet --config /etc/letsencrypt/renewal/domain.tld.confModifique 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