Risposta aggiornata (vedere la risposta originale di seguito)
Nella mia risposta originale mi sono concentrato sul fatto che lo script che hai fornito non è richiesto quando si utilizza il renew
comando. Tuttavia, non mi sono assicurato che il renew
comando fosse effettivamente applicabile in questo scenario.
Come affermano cdhowie e bobpaul nei commenti: certbot renew
è una modalità non interattiva che, insieme alla sfida DNS, richiede di fornire uno script tramite il --manual-auth-hook
parametro. Detto script deve essere in grado di stabilire un TXT
record. In seguito puoi anche fornire un altro script per la pulizia tramite il --manual-cleanup-hook
parametro.
Se si forniscono questi parametri, l'intero processo verrà eseguito automaticamente senza alcuna interazione.
Se non si forniscono questi parametri, certbot fallirà:
/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
Se si desidera rinnovare i certificati tramite la modalità manuale, è necessario rieseguire i comandi utilizzati per acquisire i certificati. In questo caso, lo script è una buona opzione poiché il certonly
comando non esamina i certificati / la configurazione attuali e richiede invece di fornire i nomi di dominio tramite il -d
parametro o in modalità interattiva.
quando eseguo "certbot rinnova", li rinnoverà automaticamente tutti senza usare il mio script?
TL; DR: Sì, dovrebbe.
Diamo un'occhiata alla documentazione di certbot :
A partire dalla versione 0.10.0, Certbot supporta un'azione di rinnovo per verificare la scadenza imminente di tutti i certificati installati e tentare di rinnovarli. La forma più semplice è semplicemente
certbot rinnova
Fin qui tutto bene.
Questo comando tenta di rinnovare tutti i certificati ottenuti in precedenza che scadono in meno di 30 giorni.
Questo dovrebbe rispondere alla tua domanda. Attenzione: non sono consapevole di come certbot
gestire le situazioni in cui si spostano i certificati in directory diverse.
Più avanti nello stesso paragrafo:
Lo stesso plugin e le stesse opzioni utilizzate al momento dell'emissione del certificato verranno utilizzate per il tentativo di rinnovo, a meno che non vengano specificati altri plug-in o opzioni. Diversamente certonly
, renew
agisce su più certificati e tiene sempre conto del fatto che ognuno è in scadenza.
Quindi sì; certbot
dovrebbe rinnovare tutti i certificati senza l'aiuto del tuo script.
Come posso effettivamente creare un nuovo certificato utilizzando la sfida DNS per iniziare?
Cosa c'è di sbagliato nel comando che hai pubblicato all'inizio del tuo post?
certbot -d example.com --manual --preferred-challenges dns certonly
acquisirà un certificato per example.com usando la sfida dns.
I passaggi per creare un certificato sono:
- Esegui il
certbot
comando che hai pubblicato
- Attendi che il comando ti mostri un record TXT DNS
- Crea quel record TXT
- Continua il
certbot
comando
- Ottieni un certificato per il dominio specificato
- Elimina il record TXT (poiché è necessario solo per la creazione e uno nuovo per il rinnovo)
Se vuoi automatizzare quel processo completo, potresti dare un'occhiata a uno strumento come lego che supporta un paio di provider DNS .