Base di conoscenze

1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!

Rinnovare un certificato "wildcard" tramite challenge DNS

Questa guida spiega come generare e poi rinnovare automaticamente un certificato wildcard tramite sfida DNS utilizzando Certbot e il plugin dns-infomaniak.

 

1. Installazione del plugin DNS Infomaniak

I plugin DNS non sono installati per impostazione predefinita con Certbot. Per installare correttamente certbot e il plugin dns-infomaniak, per evitare un eventuale errore The requested dns-infomaniak plugin does not appear to be installed, prendi visione delle istruzioni ufficiali Certbot e scegli i giusti Software → Sistema e consulta la scheda Wildcard.

 

2. Generare il certificato wildcard

Da un Terminale, esegui il seguente comando Certbot per generare il certificato manualmente:

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

 

3. Creare la registrazione TXT

Dalla gestione dei domini del Manager Infomaniak, crea la registrazione TXT richiesta per _acme_challenge.domain.tld.

 

4. Creare il file di configurazione del rinnovo

Da un Terminale, crea o modifica il file: /etc/letsencrypt/renewal/domain.tld.conf. Esempio di configurazione consigliata:

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

Alcuni errori derivano da file generati automaticamente da Certbot contenenti campi obsoleti o errati (version = ..., cert-path = ..., ecc.). Ricrea sempre il file di renewal seguendo l'esempio sopra riportato.

 

5. Creare lo script infomaniak-auth.sh

Dalla gestione API del Manager Infomaniak, crea un token API Infomaniak con lo scope domain, che sostituirà XXXXXXX nello script riportato di seguito.

Il file indicato nella tua configurazione deve corrispondere assolutamente al nome reale dello script. Esempio: se utilizzi infomaniak-auth.sh nella configurazione, non creare infomaniak-auth-domain.xyz.sh.

Da un Terminale, crea il file /root/infomaniak-auth.sh senza tabulazioni alla fine della riga (provocano errori in 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

Lo script deve essere reso eseguibile:

chmod +x /root/infomaniak-auth.sh

 

6. Creare uno script di pulizia

Crea il file /root/infomaniak-clean.sh

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

Lo script deve essere reso eseguibile:

chmod +x /root/infomaniak-clean.sh

 

7. Testare il rinnovo

Prima di utilizzare un cron, testa sempre con questo comando che mostrerà eventuali errori (script non trovato, nome file errato, permessi mancanti, plugin assente, ecc.):

certbot renew --dry-run

 

8. Configurare un task cron

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

Modificate 30 giorni sopra secondo la frequenza desiderata. Il cron utilizzerà automaticamente:

  • il file domain.tld.conf
  • lo script di autenticazione infomaniak-auth.sh
  • il plugin dns-infomaniak

Questa FAQ è stata utile?