Eine Einführung in Let’s Encrypt

Einführung

Let’s Encrypt ist eine offene und automatisierte Zertifizierungsstelle, die das Protokoll vonACME (Automatic Certificate Management Environment )verwendet, um jedem kompatiblen Client kostenlose TLS / SSL-Zertifikate bereitzustellen. Mit diesen Zertifikaten können Sie die Kommunikation zwischen Ihrem Webserver und Ihren Benutzern verschlüsseln. Es stehen Dutzende von Clients zur Verfügung, die in verschiedenen Programmiersprachen geschrieben sind, und viele Integrationen mit gängigen Verwaltungstools, Diensten und Servern.

Der beliebteste ACME-Client,Certbot, wird jetzt vonthe Electronic Frontier Foundation entwickelt. Zusätzlich zur Überprüfung des Domänenbesitzes und zum Abrufen von Zertifikaten kann Certbot TLS / SSL automatisch auf den WebservernApache undNginxkonfigurieren.

In diesem Lernprogramm werden kurz Zertifizierungsstellen und die Funktionsweise von Let's Encrypt erläutert. Anschließend werden einige beliebte ACME-Clients vorgestellt.

Was ist eine Zertifizierungsstelle?

Zertifizierungsstellen (CAs) sind Entitäten, die TLS / SSL-Zertifikate kryptografisch signieren, um für ihre Authentizität zu bürgen. Browser und Betriebssysteme verfügen über eine Liste vertrauenswürdiger Zertifizierungsstellen, mit denen Site-Zertifikate überprüft werden.

Bis vor kurzem handelte es sich bei den meisten Zertifizierungsstellen um gewerbliche Unternehmen, die für ihre Überprüfungs- und Signaturdienste eine Gebühr erhoben. Let’s Encrypt hat diesen Prozess für Benutzer kostenlos gemacht, indem das Verfahren vollständig automatisiert wurde und Sponsoring und Spenden für die Finanzierung der erforderlichen Infrastruktur erforderlich sind.

Weitere Informationen zu Zertifikaten und den verschiedenen Arten von Zertifizierungsstellen finden Sie unter „https://www.digitalocean.com/community/tutorials/a-comparison-of-let-s-encrypt-commercial-and-private-certificate“ -authorities-and-self-signed-ssl-certificates [Ein Vergleich von Let's Encrypt, kommerziellen und privaten Zertifizierungsstellen und selbstsignierten SSL-Zertifikaten]. “

Als Nächstes schauen wir uns an, wie Let's Encrypt die automatische Domain-Überprüfung durchführt.

So verschlüsseln wir

Das ACME-Protokoll von Encrypt definiert, wie Clients mit ihren Servern kommunizieren, um Zertifikate anzufordern, den Domänenbesitz zu überprüfen und Zertifikate herunterzuladen. Es ist derzeit dabei, ein offiziellerIETF-Standard zu werden.

Let's Encrypt bietetdomain-validated-Zertifikate an. Dies bedeutet, dass überprüft werden muss, ob die Zertifikatanforderung von einer Person stammt, die die Domäne tatsächlich kontrolliert. Dazu senden sie dem Client ein eindeutiges Token und stellen dann eine Web- oder DNS-Anfrage, um einen von diesem Token abgeleiteten Schlüssel abzurufen.

Bei der HTTP-basierten Abfrage berechnet der Client beispielsweise einen Schlüssel aus dem eindeutigen Token und einem Kontotoken und legt die Ergebnisse in einer Datei ab, die vom Webserver bereitgestellt werden soll. Die Let's Encrypt-Server rufen die Datei dann beihttp://example.com/.well-known/acme-challenge/token ab. Wenn der Schlüssel korrekt ist, hat der Client bewiesen, dass er Ressourcen aufexample.com steuern kann, und der Server signiert ein Zertifikat und gibt es zurück.

Das ACME-Protokoll definiert mehrere Herausforderungen, die Ihr Client zum Nachweis des Domainbesitzes verwenden kann. Die HTTPS-Abfrage ähnelt HTTP, außer dass der Client anstelle einer Textdatei ein selbstsigniertes Zertifikat mit dem enthaltenen Schlüssel bereitstellt. Die DNS-Abfrage sucht nach dem Schlüssel in einem DNS-TXT-Eintrag.

Mit dem Certbot können Sie den Client verschlüsseln

Certbot ist mit Abstand der beliebteste Let's Encrypt-Client. Es ist in den meisten wichtigen Linux-Distributionen enthalten und enthält praktische automatische Konfigurationsfunktionen für Apache und Nginx. Nach der Installation können Sie wie folgt ein Zertifikat abrufen und Ihre Apache-Konfiguration aktualisieren:

sudo certbot --apache -d www.example.com

Certbot stellt ein paar Fragen, führt die Challenge aus, lädt Zertifikate herunter, aktualisiert Ihre Apache-Konfiguration und lädt den Server neu. Sie sollten dann mit Ihrem Webbrowser zuhttps://www.example.com navigieren können. Ein grünes Schloss zeigt an, dass das Zertifikat gültig und die Verbindung verschlüsselt ist.

Da Let 's Encrypt-Zertifikate nur neunzig Tage gültig sind, ist es wichtig, einen automatischen Erneuerungsprozess einzurichten. Mit dem folgenden Befehl werden alle Zertifikate auf einem Computer erneuert:

sudo certbot renew

Setzen Sie den obigen Befehl in eine crontab, um ihn jeden Tag auszuführen. Zertifikate werden automatisch dreißig Tage vor Ablauf erneuert. Wenn ein Zertifikat ursprünglich mit den Optionen--apache oder--nginx erstellt wurde, lädt Certbot den Server nach einer erfolgreichen Verlängerung neu.

Wenn Sie mehr über cron und crontabs erfahren möchten, lesen Sie bitte das Tutorial „https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-on-a -vps [Verwendung von Cron zur Automatisierung von Aufgaben]. ”

Andere Kunden

Da das ACME-Protokoll offen und gut dokumentiert ist, wurden viele alternative Clients entwickelt. Let's Encrypt verwaltet einlist of ACME clients auf seiner Website. Die meisten anderen Clients verfügen nicht über die automatischen Webserverkonfigurationsfunktionen von Certbot, bieten jedoch andere Funktionen, die Sie möglicherweise ansprechen:

  • Es gibt einen Client, der in fast jeder Programmiersprache geschrieben ist, einschließlich Shell-Skripten, Go und Node.js. Dies kann wichtig sein, wenn Sie Zertifikate in einer eingeschränkten Umgebung erstellen und Python- und andere Certbot-Abhängigkeiten nicht einbeziehen möchten

  • Einige Clients können ohne die Berechtigungen vonrootausgeführt werden. Im Allgemeinen ist es eine gute Idee, so wenig privilegierten Code wie möglich auszuführen

  • Viele Clients können die DNS-basierte Abfrage mithilfe der API Ihres DNS-Providers automatisieren, um den entsprechenden TXT-Eintrag automatisch zu erstellen. Die DNS-Abfrage ermöglicht einige schwierigere Anwendungsfälle, z. B. das Verschlüsseln von nicht öffentlich zugänglichen Webservern.

  • Einige Clients sind tatsächlich in Webserver, Reverse-Proxys oder Load-Balancer integriert, was die Konfiguration und Bereitstellung besonders einfach macht

Einige der beliebtesten Kunden sind:

  • lego: Lego wurde in Go geschrieben und ist eine Binärinstallation mit einer Datei. Es unterstützt viele DNS-Anbieter, wenn die DNS-Herausforderung verwendet wird

  • acme.sh: acme.sh ist ein einfaches Shell-Skript, das im nicht privilegierten Modus ausgeführt werden und auch mit mehr als 30 DNS-Anbietern interagieren kann

  • Caddy: Caddy ist ein vollständiger Webserver, der in Go geschrieben wurde und integrierte Unterstützung für Let's Encrypt bietet.

Viele weitere Clients stehen zur Verfügung, und viele andere Server und Dienste automatisieren die Einrichtung von TLS / SSL durch die Integration der Unterstützung von Let's Encrypt.

Fazit

Wir haben die Grundlagen der Funktionsweise von Let's Encrypt durchgearbeitet und einige der verfügbaren Clientsoftware besprochen. Wenn Sie detailliertere Anweisungen zur Verwendung von Let's Encrypt mit verschiedenen Programmen benötigen, sind die folgenden Tutorials ein guter Ausgangspunkt: