Base de connaissances

1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !

Renouveler un certificat "wildcard" par challenge DNS

Ce guide explique comment générer puis renouveler automatiquement un certificat wildcard via challenge DNS en utilisant Certbot et le plugin dns-infomaniak.

 

1. Installation du plugin DNS Infomaniak

Les plugins DNS ne sont pas installés par défaut avec Certbot. Pour installer correctement certbot et le plugin dns-infomaniak, afin d'éviter une éventuelle erreur The requested dns-infomaniak plugin does not appear to be installed prenez connaissance des instructions officielles Certbot et choisissez les bons Software → System puis consultez l'onglet Wildcard.

 

2. Générer le certificat wildcard

Depuis un Terminal, exécutez la commande Certbot suivante pour générer le certificat manuellement :

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

 

3. Créer l'enregistrement TXT

Depuis la gestion des domaines du Manager Infomaniak, créez l'enregistrement TXT demandé pour _acme_challenge.domain.tld.

 

4. Créer le fichier de configuration de renouvellement

Depuis un Terminal, créez ou éditez le fichier : /etc/letsencrypt/renewal/domain.tld.conf. Exemple de configuration recommandée :

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

Certaines erreurs proviennent de fichiers générés automatiquement par Certbot contenant des champs obsolètes ou incorrects (version = ..., cert-path = ..., etc.). Recréez toujours le fichier de renewal en suivant l'exemple ci-dessus.

 

5. Créer le script infomaniak-auth.sh

Depuis la gestion API du Manager Infomaniak, créez un token d'API Infomaniak avec le scope domain, qui remplacera XXXXXXX dans le script ci-dessous.

Le fichier indiqué dans votre configuration doit absolument correspondre au nom réel du script. Exemple : si vous utilisez infomaniak-auth.sh dans la conf, ne créez pas infomaniak-auth-domain.xyz.sh.

Depuis un Terminal, créez le fichier /root/infomaniak-auth.sh sans tabulations en fin de ligne (elles provoquent des erreurs dans Bash) avec:

#!/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

Le script doit être rendu exécutable :

chmod +x /root/infomaniak-auth.sh

 

6. Créer un script de nettoyage

Créez le fichier /root/infomaniak-clean.sh

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

Le script doit être rendu exécutable :

chmod +x /root/infomaniak-clean.sh

 

7. Tester le renouvellement

Avant d'utiliser un cron, testez toujours avec cette commande qui affichera les erreurs éventuelles (script non trouvé, mauvais nom de fichier, permissions manquantes, plugin absent, etc.):

certbot renew --dry-run

 

8. Configurer une tâche cron

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

Modifiez 30 jours ci-dessus selon la fréquence désirée. Le cron utilisera automatiquement :

  • le fichier domain.tld.conf
  • le script d'authentification infomaniak-auth.sh
  • le plugin dns-infomaniak

Cette FAQ a été utile?