Derzeit ist es möglich, eine DNS-Validierung auch mit dem certbot LetsEncrypt-Client im manuellen Modus durchzuführen. Eine Automatisierung ist ebenfalls möglich (siehe unten).
Manuelles Plugin
Sie können entweder eine manuelle Überprüfung durchführen - mit dem manuellen Plugin.
certbot -d bristol3.pki.enigmabridge.com --manual --preferred-challenges dns certonly
Certbot bietet Ihnen dann eine Anleitung zum manuellen Aktualisieren eines TXT-Eintrags für die Domain, um mit der Validierung fortzufahren.
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
Nachdem Sie den DNS-Eintrag aktualisiert haben, drücken Sie die Eingabetaste. Certbot wird fortgesetzt. Wenn LetsEncrypt CA die Abfrage überprüft, wird das Zertifikat wie gewohnt ausgestellt.
Sie können auch einen Befehl mit mehr Optionen verwenden, um die Interaktivität zu minimieren und Certbot-Fragen zu beantworten. Beachten Sie, dass das manuelle Plugin den nicht interaktiven Modus noch nicht unterstützt.
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
Die Erneuerung funktioniert nicht mit dem manuellen Plugin, da es im nicht interaktiven Modus ausgeführt wird. Weitere Informationen finden Sie in der offiziellen Certbot- Dokumentation .
Update: manuelle Haken
In der neuen Certbot Version können Sie mit Haken , zum Beispiel --manual-auth-hook
, --manual-cleanup-hook
. Die Hooks sind externe Skripte, die von Certbot ausgeführt werden, um die Aufgabe auszuführen.
Informationen werden in Umgebungsvariablen übergeben - z. B. Domäne zur Validierung, Challenge-Token. 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
Sie können Ihren eigenen Handler schreiben oder bereits vorhandene verwenden, es stehen viele zur Verfügung, z. B. für Cloudflare DNS.
Weitere Informationen zum offiziellen Certbot Haken Dokumentation
Automatisierung, Erneuerung, Skripterstellung
Wenn Sie die Validierung von DNS-Anfragen automatisieren möchten, ist dies mit vanila certbot derzeit nicht möglich. Update: Mit den Certbot-Hooks ist eine gewisse Automatisierung möglich.
Wir haben daher ein einfaches Plugin erstellt, das die Skripterstellung mit DNS-Automatisierung unterstützt. Es ist als certbot-external-auth verfügbar .
pip install certbot-external-auth
Es unterstützt die Validierungsmethoden DNS, HTTP und TLS-SNI. Sie können es entweder im Handler-Modus oder im JSON-Ausgabemodus verwenden.
Handler-Modus
Im Handler-Modus ruft das certbot + -Plugin externe Hooks (ein Programm, ein Shell-Skript, Python, ...) auf, um die Validierung und Installation durchzuführen. In der Praxis schreiben Sie ein einfaches Handler- / Shell-Skript, das Eingabeargumente abruft - Domain, Token und nimmt die Änderung in DNS vor. Wenn der Handler fertig ist, fährt certbot wie gewohnt mit der Validierung fort.
Dies gibt Ihnen zusätzliche Flexibilität, eine Verlängerung ist ebenfalls möglich.
Der Handler-Modus ist auch mit dehydrierten DNS-Hooks (vormals letsencrypt.sh) kompatibel . Es gibt bereits viele DNS-Hooks für gängige Anbieter (z. B. CloudFlare, GoDaddy, AWS). Im Repository gibt es eine README-Datei mit umfangreichen Beispielen und Beispielhandlern.
Beispiel mit dehydriertem DNS-Haken:
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
JSON-Modus
Ein weiterer Plugin-Modus ist der JSON-Modus. Es wird ein JSON-Objekt pro Zeile erstellt. Dies ermöglicht eine kompliziertere Integration, z. B. wenn Ansible oder ein Deployment Manager certbot aufruft. Die Kommunikation erfolgt über STDOUT und STDIN. Cerbot erzeugt ein JSON-Objekt mit Daten, um die Validierung durchzuführen, zB
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"}
Sobald DNS aktualisiert wurde, sendet der Anrufer ein Zeilenumbruchzeichen an STDIN des Certbot, um zu signalisieren, dass die Validierung fortgesetzt werden kann.
Dies ermöglicht die Automatisierung und Zertifikatsverwaltung vom zentralen Verwaltungsserver aus. Zur Installation können Sie Zertifikate über SSH bereitstellen.
Weitere Informationen finden Sie in der Readme- Datei und in den Beispielen zu certbot-external-auth GitHub.
BEARBEITEN: Es gibt auch einen neuen Blog-Beitrag , der das DNS-Validierungsproblem und die Verwendung des Plugins beschreibt.
BEARBEITEN: Wir arbeiten derzeit an der zweistufigen Ansible-Validierung.