1000 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/directory3. 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 = rsaAlcuni 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-tosLo script deve essere reso eseguibile:
chmod +x /root/infomaniak-auth.sh6. Creare uno script di pulizia
Crea il file /root/infomaniak-clean.sh
#!/bin/bash
# Optionnel : suppression de l'entrée DNS temporaire
exit 0Lo script deve essere reso eseguibile:
chmod +x /root/infomaniak-clean.sh7. 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-run8. Configurare un task cron
0 0 */30 * * /usr/bin/certbot renew --quiet --config /etc/letsencrypt/renewal/domain.tld.confModificate 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