Eine Einführung in Let’s Encrypt

Einführung

Let’s Encrypt ist eine offene und automatisierte Zertifizierungsstelle, die das ACME (Automated Certificate Management Environment)-Protokoll verwendet, um kostenlos TLS/SSL-Zertifikate für jeden kompatiblen Client bereitzustellen. Diese Zertifikate können verwendet werden, um die Kommunikation zwischen Ihrem Webserver und Ihren Benutzern zu verschlüsseln. Es gibt Dutzende von Clients, die in verschiedenen Programmiersprachen geschrieben wurden, sowie viele Integrationen mit beliebten Verwaltungstools, Diensten und Servern.

Der beliebteste ACME-Client, Certbot, wird jetzt von der Electronic Frontier Foundation entwickelt. Neben der Überprüfung des Domain-Besitzes und dem Abrufen von Zertifikaten kann Certbot automatisch TLS/SSL auf sowohl Apache– als auch Nginx-Webservern konfigurieren.

In diesem Tutorial wird kurz auf Zertifizierungsstellen und die Funktionsweise von Let’s Encrypt eingegangen und dann einige beliebte ACME-Clients überprüft.

Was ist eine Zertifizierungsstelle?

Zertifizierungsstellen (CAs) sind Einheiten, die TLS/SSL-Zertifikate kryptografisch signieren, um für deren Echtheit zu bürgen. Browser und Betriebssysteme verfügen über eine Liste vertrauenswürdiger CAs, die sie zur Überprüfung von Seitenzertifikaten verwenden.

Bis vor Kurzem waren die meisten CAs kommerzielle Betriebe, die Geld für ihre Überprüfungs- und Signaturdienste verlangten. Let’s Encrypt hat diesen Prozess für Benutzer kostenlos gemacht, indem es das Verfahren vollständig automatisiert hat und sich auf Sponsoring und Spenden zur Finanzierung der erforderlichen Infrastruktur verlässt.

Weitere Informationen zu Zertifikaten und den verschiedenen Arten von Zertifizierungsstellen finden Sie in „Ein Vergleich von Let’s Encrypt, kommerziellen und privaten Zertifizierungsstellen sowie selbstsignierten SSL-Zertifikaten“.

Als nächstes werden wir uns ansehen, wie Let’s Encrypt die automatisierte Domain-Verifizierung durchführt.

Wie Let’s Encrypt funktioniert

Das ACME-Protokoll von Let’s Encrypt definiert, wie Clients mit seinen Servern kommunizieren, um Zertifikate anzufordern, die Eigentümerschaft der Domain zu überprüfen und Zertifikate herunterzuladen. Es befindet sich derzeit im Prozess, ein offizieller IETF Standard zu werden.

Let’s Encrypt bietet domainvalidierte Zertifikate an, was bedeutet, dass sie überprüfen müssen, ob der Zertifikatsantrag von einer Person stammt, die tatsächlich die Kontrolle über die Domain hat. Dies geschieht, indem dem Client ein eindeutiges Token gesendet wird und dann eine Web- oder DNS-Anfrage gestellt wird, um einen aus diesem Token abgeleiteten Schlüssel abzurufen.

Zum Beispiel, bei der HTTP-basierten Herausforderung berechnet der Client einen Schlüssel aus dem eindeutigen Token und einem Kontotoken und platziert die Ergebnisse in einer Datei, die vom Webserver bereitgestellt wird. Die Let’s Encrypt-Server rufen dann die Datei unter http://beispiel.com/.well-known/acme-challenge/token ab. Wenn der Schlüssel korrekt ist, hat der Client nachgewiesen, dass er Ressourcen auf beispiel.com kontrollieren kann, und der Server wird ein Zertifikat signieren und zurücksenden.

Das ACME-Protokoll definiert mehrere Herausforderungen, die Ihr Client verwenden kann, um den Domainbesitz nachzuweisen. Die HTTPS-Herausforderung ist ähnlich wie HTTP, nur dass der Client anstelle einer Textdatei ein selbstsigniertes Zertifikat mit dem enthaltenen Schlüssel bereitstellt. Die DNS-Herausforderung sucht nach dem Schlüssel in einem DNS TXT-Eintrag.

Der Certbot Let’s Encrypt-Client

Certbot ist mit Abstand der beliebteste Let’s Encrypt-Client. Er ist in den meisten großen Linux-Distributionen enthalten und bietet praktische automatische Konfigurationsmöglichkeiten für Apache und Nginx. Nach der Installation können das Abrufen eines Zertifikats und das Aktualisieren Ihrer Apache-Konfiguration wie folgt durchgeführt werden:

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

Certbot wird einige Fragen stellen, die Herausforderung durchführen, Zertifikate herunterladen, Ihre Apache-Konfiguration aktualisieren und den Server neu laden. Sie sollten dann mit Ihrem Webbrowser zu https://www.example.com navigieren können. Ein grünes Schloss wird angezeigt, das anzeigt, dass das Zertifikat gültig ist und die Verbindung verschlüsselt ist.

Weil Let’s Encrypt-Zertifikate nur neunzig Tage gültig sind, ist es wichtig, einen automatisierten Erneuerungsprozess einzurichten. Der folgende Befehl erneuert alle Zertifikate auf einem Rechner:

  1. sudo certbot renew

Fügen Sie den obigen Befehl in eine Crontab ein, um ihn jeden Tag auszuführen, und Zertifikate werden automatisch dreißig Tage vor ihrem Ablauf erneuert. Wenn ein Zertifikat ursprünglich mit den Optionen --apache oder --nginx erstellt wurde, wird Certbot den Server nach erfolgreicher Erneuerung neu laden.

Wenn Sie mehr über Cron und Crontabs erfahren möchten, lesen Sie bitte das Tutorial „Wie man Cron verwendet, um Aufgaben zu automatisieren“.

Andere Clients

Weil das ACME-Protokoll offen und gut dokumentiert ist, wurden viele alternative Clients entwickelt. Let’s Encrypt führt eine Liste von ACME-Clients auf ihrer Website. Die meisten anderen Clients haben nicht die automatischen Webserver-Konfigurationsfunktionen von Certbot, aber sie haben andere Funktionen, die für Sie interessant sein könnten:

  • Es gibt einen Client in fast jeder Programmiersprache, einschließlich Shell-Skripten, Go und Node.js. Dies könnte wichtig sein, wenn Sie Zertifikate in einer eingeschränkten Umgebung erstellen und Python und andere Certbot-Abhängigkeiten lieber nicht einschließen möchten
  • Einige Clients können ohne Root-Berechtigungen ausgeführt werden. Es ist im Allgemeinen eine gute Idee, so wenig privilegierten Code wie möglich auszuführen
  • Viele Clients können die DNS-basierte Herausforderung automatisieren, indem sie die API Ihres DNS-Anbieters verwenden, um automatisch den entsprechenden TXT-Eintrag zu erstellen. Die DNS-Herausforderung ermöglicht einige kompliziertere Anwendungsfälle wie die Verschlüsselung von Webservern, die nicht öffentlich erreichbar sind.
  • Einige Clients sind tatsächlich in Webserver, Reverse-Proxys oder Lastenausgleicher integriert, was die Konfiguration und Bereitstellung besonders einfach macht

Einige der beliebteren Clients sind:

  • lego: Geschrieben in Go, ist lego eine Ein-Datei-Binärinstallation und unterstützt viele DNS-Anbieter bei Verwendung der DNS-Herausforderung
  • acme.sh: acme.sh ist ein einfaches Shell-Skript, das im unprivilegierten Modus ausgeführt werden kann und auch mit über 30 DNS-Anbietern interagieren kann
  • Caddy: Caddy ist ein vollständiger Webserver, der in Go geschrieben wurde und eine integrierte Unterstützung für Let’s Encrypt bietet.

Viele weitere Clients sind verfügbar, und viele andere Server und Dienste automatisieren die Einrichtung von TLS/SSL, indem sie die Unterstützung von Let’s Encrypt integrieren.

Zusammenfassung

Wir haben die Grundlagen erklärt, wie Let’s Encrypt funktioniert, und einige der verfügbaren Client-Software besprochen. Wenn Sie detailliertere Anleitungen zur Verwendung von Let’s Encrypt mit verschiedenen Softwareprogrammen wünschen, sind die folgenden Anleitungen ein guter Ausgangspunkt:

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt