Attualmente è possibile eseguire una convalida DNS anche con il client certbot LetsEncrypt in modalità manuale. L'automazione è anche possibile (vedi sotto).
Plugin manuale
Puoi eseguire una verifica manuale - con il plug-in manuale.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
Certbot fornirà quindi le istruzioni per aggiornare manualmente un record TXT per il dominio al fine di procedere con la convalida.
Please deploy a DNS TXT record under the name
_acme-challenge.bristol3.pki.enigmabridge.com with the following value:
667drNmQL3vX6bu8YZlgy0wKNBlCny8yrjF1lSaUndc
Once this is deployed,
Press ENTER to continue
Dopo aver aggiornato il record DNS, premere Invio, certbot continuerà e se LetsEncrypt CA verifica la sfida, il certificato viene emesso normalmente.
Puoi anche usare un comando con più opzioni per ridurre al minimo l'interattività e rispondere alle domande del certbot. Si noti che il plug-in manuale non supporta ancora la modalità non interattiva.
certbot --text --agree-tos --email you@example.com -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly
Il rinnovo non funziona con il plug-in manuale poiché viene eseguito in modalità non interattiva. Maggiori informazioni nella documentazione ufficiale di Certbot .
Aggiornamento: ganci manuali
Nella nuova versione è possibile utilizzare Certbot ganci , ad esempio --manual-auth-hook
, --manual-cleanup-hook
. Gli hook sono script esterni eseguiti da Certbot per eseguire l'attività.
Le informazioni vengono trasmesse nelle variabili di ambiente, ad esempio dominio da convalidare, token di verifica. Vars: CERTBOT_DOMAIN
, CERTBOT_VALIDATION
, CERTBOT_TOKEN
.
certbot certonly --manual --preferred-challenges=dns --manual-auth-hook /path/to/dns/authenticator.sh --manual-cleanup-hook /path/to/dns/cleanup.sh -d secure.example.com
Puoi scrivere il tuo gestore o usare già esistenti, ce ne sono molti disponibili, ad esempio, per Cloudflare DNS.
Maggiori informazioni ufficiali Certbot documentazione ganci
Automazione, rinnovo, scripting
Se si desidera automatizzare la convalida delle sfide DNS, al momento non è possibile con vanila certbot. Aggiornamento: un po 'di automazione è possibile con gli hook Certbot.
Abbiamo quindi creato un semplice plug-in che supporta gli script con l'automazione DNS. È disponibile come certbot-external-auth .
pip install certbot-external-auth
Supporta metodi di validazione DNS, HTTP, TLS-SNI. È possibile utilizzarlo nella modalità gestore o nella modalità di output JSON.
Modalità gestore
Nella modalità gestore, il plug-in certbot + chiama hook esterni (un programma, script di shell, python, ...) per eseguire la convalida e l'installazione. In pratica scrivi un semplice script gestore / shell che ottiene argomenti di input - dominio, token e apporta le modifiche al DNS. Al termine del gestore, certbot procede con la convalida come al solito.
Questo ti dà una flessibilità extra, è anche possibile il rinnovo.
La modalità gestore è anche compatibile con gli hook DNS disidratati (ex letsencrypt.sh). Esistono già molti hook DNS per provider comuni (ad es. CloudFlare, GoDaddy, AWS). Nel repository c'è un file README con ampi esempi e gestori di esempi.
Esempio con hook DNS disidratato :
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
--certbot-external-auth:out-handler ./dehydrated-example.sh \
--certbot-external-auth:out-dehydrated-dns \
run
Modalità JSON
Un'altra modalità plug-in è la modalità JSON. Produce un oggetto JSON per riga. Ciò consente un'integrazione più complicata, ad esempio Ansible o un gestore distribuzione sta chiamando certbot. La comunicazione viene eseguita tramite STDOUT e STDIN. Cerbot produce oggetti JSON con dati per eseguire la validazione, ad es.
certbot \
--text --agree-tos --email you@example.com \
--expand --renew-by-default \
--configurator certbot-external-auth:out \
--certbot-external-auth:out-public-ip-logging-ok \
-d "bristol3.pki.enigmabridge.com" \
--preferred-challenges dns \
certonly 2>/dev/null
{"cmd": "perform_challenge", "type": "dns-01", "domain": "bs3.pki.enigmabridge.com", "token": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4", "validation": "ejEDZXYEeYHUxqBAiX4csh8GKkeVX7utK6BBOBshZ1Y", "txt_domain": "_acme-challenge.bs3.pki.enigmabridge.com", "key_auth": "3gJ87yANDpmuuKVL2ktfQ0_qURQ3mN0IfqgbTU_AGS4.tRQM98JsABZRm5-NiotcgD212RAUPPbyeDP30Ob_7-0"}
Una volta aggiornato il DNS, il chiamante invia un carattere di nuova riga a STDIN del certbot per segnalare che può continuare con la convalida.
Ciò consente l'automazione e la gestione dei certificati dal server di gestione centrale. Per l'installazione è possibile distribuire certificati tramite SSH.
Per maggiori informazioni, consultare il file Leggimi ed esempi su certbot-external-auth GitHub.
EDIT: c'è anche un nuovo post sul blog che descrive il problema di convalida DNS e l'utilizzo del plugin.
EDIT: attualmente stiamo lavorando sulla convalida in due passaggi Ansible, presto sarà disattivato.