Rinnova i domini usando certbot e usando la sfida DNS


9

Ho creato diversi certificati SSL per diversi domini utilizzando il metodo autonomo. Sono interessato solo ai certificati, senza integrazione del server.

Ora sono per il rinnovo. Quindi, ho corso:

certbot -d example.com --manual --preferred-challenges dns certonly

E ha seguito le istruzioni per ciascun dominio (aggiungendo la voce DNS richiesta per ognuno). In questo modo, non ho dovuto arrestare il server e ottenere i miei nuovi certificati.

La mia (vaga) comprensione di tutto ciò è che non esiste un modo attuale per rinnovare automaticamente i certificati utilizzando la sfida DNS. O forse non puoi rinnovare automaticamente i certificati per il metodo "manuale"?

Comunque, ho scritto questo script:

#!/bin/bash

for i in renewal/*;do
  n=${i:8:-5};
  echo $n;
  # echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default  --manual-public-ip-logging-ok certonly;
done

A questo punto, nella renewaldirectory TUTTI i domini hanno:

autenticatore = manuale

E:

pref_challs = dns-01

Domande:

  • Ora ... quando eseguo "certbot rinnova", li rinnoverà automaticamente tutti senza usare il mio script?

  • Come posso effettivamente creare un nuovo certificato utilizzando la sfida DNS per iniziare?

Risposte:


4

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 renewcomando. Tuttavia, non mi sono assicurato che il renewcomando 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-hookparametro. Detto script deve essere in grado di stabilire un TXTrecord. In seguito puoi anche fornire un altro script per la pulizia tramite il --manual-cleanup-hookparametro.

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 certonlycomando non esamina i certificati / la configurazione attuali e richiede invece di fornire i nomi di dominio tramite il -dparametro 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 certbotgestire 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, renewagisce su più certificati e tiene sempre conto del fatto che ognuno è in scadenza.

Quindi sì; certbotdovrebbe 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 certonlyacquisirà un certificato per example.com usando la sfida dns.

I passaggi per creare un certificato sono:

  • Esegui il certbotcomando che hai pubblicato
  • Attendi che il comando ti mostri un record TXT DNS
  • Crea quel record TXT
  • Continua il certbotcomando
  • 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 .


Fantastico, ti farà sapere se funziona tra un paio di mesi!
Merc


Sì, quindi generalmente non usare --manual. L'intero scopo di --manualè forzare la modalità interattiva. Ma puoi usare plugin DNS come aws o digitalocean certonlysenza l' --manualopzione e si rinnoveranno automaticamente prima di 90 giorni.
bobpaul

Grazie per l'input, ho aggiornato la risposta.
malte,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.