Let's Encrypt hat angekündigt, dass sie Folgendes haben:
Unterstützung für die ACME-DNS-Abfrage aktiviert
Wie erstelle ich ./letsencrypt-auto
ein neues Zertifikat mithilfe der Überprüfung der DNS-Abfragedomäne?
BEARBEITEN
Ich meine: Wie vermeide ich die http/https
Portbindung, indem ich die neu angekündigte Funktion (20.01.2015) verwende, mit der Sie die Domain-Inhaberschaft durch Hinzufügen eines bestimmten TXT-Eintrags in der DNS-Zone der Zieldomäne nachweisen können?
lets-encrypt
Pierre Prinetti
quelle
quelle
Antworten:
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 bietet Ihnen dann eine Anleitung zum manuellen Aktualisieren eines TXT-Eintrags für die Domain, um mit der Validierung fortzufahren.
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.
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
.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 .
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:
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
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.
quelle
certbot certonly --preferred-challenges dns -d example.com
) für die erste Anforderung verwenden. Verwenden Sie nach dem Testen und Wechseln des A-Records die übliche Webroot-Methode (certbot certonly webroot -d example.com -w /path/to/webroot
) und verwenden Sie dabei genau dieselben Domainnamen wie zuvor. Bei korrekter Ausführung erkennt certbot das vorhandene Zertifikat / die vorhandene Konfiguration und aktualisiert die Erneuerungseinstellungen, sodass das Zertifikat in Zukunft automatisch erneuert wird.Ich konnte den
dehydrated
Client verwenden, um mithilfe der DNS-Validierung ein Zertifikat zu erhalten.https://github.com/lukas2511/dehydrated
Sie müssen den richtigen DNS-Überprüfungshook für Ihre Domain verwenden, aber als Beispiele stehen einige Optionen zur Verfügung:
https://github.com/lukas2511/dehydrated/wiki/Examples-for-DNS-01-hooks
quelle
route53.rb
Hook-Skript definierten Gem-Abhängigkeiten installieren musste .Ab heute unterstützt der offizielle Client den Aufforderungstyp DNS-01 (noch) nicht.
Siehe https://community.letsencrypt.org/t/status-of-official-letsencrypt-clients-dns-01-challenge-support/9427
Sie können den Fortschritt bei dieser PR verfolgen . Alternativ gibt es einige Clients , die dies bereits unterstützen.
quelle
Ich habe ein Hook-Skript für den Client letsencrypt.sh geschrieben , mit dem Sie die Lets Encrypt DNS-Überprüfung für DNS-Anbieter verwenden können, die keine API zur Verwendung bereitstellen (auch bekannt als manuelle Eingabe und Überprüfung erforderlich).
Sie können es hier überprüfen: https://github.com/jbjonesjr/letsencrypt-manual-hook
quelle
Wie bereits in den vorherigen Antworten erwähnt, können Sie eine Domain auf einfache Weise mithilfe von DNS überprüfen:
apt-get install -y git ruby letsencrypt git clone https://github.com/lukas2511/dehydrated.git git clone https://github.com/jbjonesjr/letsencrypt-manual-hook.git dehydrated/hooks/manual
./dehydrated/dehydrated -c -t dns-01 -d www.example.com -k ./dehydrated/hooks /manual/manual_hook.rb
quelle
Nachdem ich verschiedene Kombinationen ausprobiert hatte, funktionierte dies für mich mit dehydrierten und letsencrypt-manual-hook- Git-Repositories. Wenn die unten genannten Schritte für Sie, vergessen Sie nicht Star diese Repositorys
HINWEIS: Dies gilt zusätzlich zu den Antworten von panticz.de und alexcline
Sie erhalten einen Hash (nachdem Sie den obigen Befehl ausgeführt haben), erstellen Sie einen TXT- Eintrag in Ihrem DNS. Stellen Sie sicher, dass es funktioniert, indem Sie den folgenden Befehl oder GSuite Toolbox ausführen
Drücken Sie jetzt bei der Eingabeaufforderung die Eingabetaste . Dies hat bei mir nicht funktioniert, obwohl der TXT-Datensatz aktualisiert wurde. Ich musste Strg + C drücken und den Befehl erneut ausführen.
Jetzt sind Ihre öffentlichen und privaten Zertifikate hier präsent.
Zum Erneuern (minimale Wartezeit beträgt 30 Tage) wird genau derselbe Befehl erneut ausgeführt.
quelle
Hugo Landau hat einen ACME-Client in Go ( https://github.com/hlandau/acme ) geschrieben, der DNS-Herausforderungen unterstützt (mit dem nsupdate-Protokoll von BIND). Es funktioniert seit mindestens 18 Monaten einwandfrei für mich.
quelle