Zum Inhalt springen

Let's Encrypt/Anwendungen: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „z. B. “ durch „beispielsweise “
DanielZorin (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
== ACME Client Implementierungen ==
== Überblick ==
Let’s Encrypt verwendet das ACME-Protokoll, um zu überprüfen, ob Sie einen bestimmten Domainnamen steuern und um Ihnen ein Zertifikat auszustellen
[[Let's Encrypt|Let’s Encrypt]] ermöglicht die automatisierte Ausstellung und Erneuerung von TLS-Zertifikaten über das ACME-Protokoll (RFC 8555)
* Um ein Let’s Encrypt-Zertifikat zu erhalten, müssen Sie eine ACME-Clientsoftware auswählen
* Ein ACME-Client weist die Kontrolle über eine Domain nach und ruft ein Zertifikat ab
* Zertifikate besitzen eine maximale Gültigkeit von 90 Tagen, daher sollte eine automatische Erneuerung konfiguriert werden


Die folgenden ACME-Clients werden von Dritten angeboten
== ACME-Client-Implementierungen ==
* Let’s Encrypt kontrolliert oder überprüft keine Clients von Drittanbietern und kann keine Garantie für deren Sicherheit oder Zuverlässigkeit abgeben
Zur Nutzung von Let’s Encrypt muss eine ACME-Clientsoftware eingesetzt werden
* Es stehen zahlreiche Clients von Drittanbietern zur Verfügung. 
:* Keine Überprüfung oder Zertifizierung dieser Clients durch Let’s Encrypt
* Browserbasierte Clients werden nicht berücksichtigt, da sie manuelle Erneuerungen fördern


Einige ACME-Clients im Browser sind zwar verfügbar, werden hier jedoch nicht aufgeführt, da sie einen manuellen Erneuerungsworkflow fördern, der zu einer schlechten Benutzererfahrung führt und das Risiko von versäumten Erneuerungen erhöht
=== Certbot ===
Für die meisten Szenarien wird Certbot empfohlen. 
* Unterstützt automatisiertes Ausstellen, Installieren und Erneuern von Zertifikaten
* Bietet Auto-Konfiguration sowie Expertenmodus. 
* Umfangreiche Dokumentation und breite Betriebssystemunterstützung


==== Empfohlen: Certbot ====
=== ACMEv1 / ACMEv2 ===
Wir empfehlen, dass die meisten Leute mit dem [https://certbot.eff.org/ Certbot] Client beginnen
Alle unterstützten ACME-Clients verwenden '''ACMEv2 (RFC 8555)'''
* Er kann einfach ein Zertifikat für Sie erhalten oder auch bei der Installation geholfen werden, je nachdem, was Sie bevorzugen
* ACMEv1 wurde am 1. Juni 2021 vollständig abgeschaltet
* Es ist einfach zu bedienen, funktioniert mit vielen Betriebssystemen und ist gut dokumentiert
 
Wenn certbot nicht Ihren Anforderungen entspricht oder Sie einfach etwas anderes ausprobieren möchten, können Sie unten aus einer Vielzahl von Clients auswählen, sortiert nach der Sprache oder Umgebung, in der sie ausgeführt werden
 
==== ACMEv1 und ACMEv2 ====
Let’s Encrypt unterstützt die ACMEv2 API, welche kompatibel ist mit dem [https://tools.ietf.org/html/rfc8555 finalisierten ACME Standard]
* Wir [https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430/ bauen langsam die ältere ACMEv1 API] in 2020 und 2021 ab
* Wenn Sie bereits einen dieser Clients verwenden, stellen Sie sicher, dass Sie auf die neueste Version aktualisieren
* Wenn der von Ihnen verwendete Client unten nicht aufgeführt ist, wenden Sie sich an die Projektbetreuer, oder wechseln Sie zu einem anderen Client
 
https://letsencrypt.org/de/docs/client-options/


== Erste Schritte ==
== Erste Schritte ==
Um HTTPS auf Ihrer Website zu aktivieren, brauchen Sie ein Zertifikat (eine Datei) von einer Zertifizierungsstelle (CA)
Zur Aktivierung von HTTPS wird ein Zertifikat benötigt, das über ACME angefordert wird
* Let’s Encrypt ist eine CA
* Der Nachweis der Domainkontrolle erfolgt über einen ACME-Client oder über Integrationen beim Hosting-Provider
* Um für Ihre Domain ein Zertifikat von Let’s Encrypt zu bekommen, müssen Sie nachweisen, dass Sie die Kontrolle über diese Domain haben
* Entscheidend ist, '''ob Shell-Zugang verfügbar ist'''
* Mit Let’s Encrypt benutzen Sie Software, die das [https://tools.ietf.org/html/rfc8555 ACME-Protokoll] benutzt, welches typischerweise auf Ihrem Web-Host läuft
 
Um herauszufinden, welche Methode für Sie die richtige ist, ist es wichtig herauszufinden, ob Sie zu Ihrer Webseite [https://en.wikipedia.org/wiki/Shell_account Shell-Zugang] haben (auch bekannt als SSH-Zugang)
* Wenn Sie Ihre Website durch eine Kontrollschnittstelle verwalten wie [https://cpanel.net/ cPanel], [https://www.plesk.com/ Plesk] oder [https://wordpress.org/ WordPress], dann haben Sie wahrscheinlich keinen Shell-Zugang
* Sicherheitshalber können Sie Ihren Dienstanbieter fragen


=== Mit Shell-Zugang ===
=== Mit Shell-Zugang ===
Wir empfehlen den meisten Leuten mit Shell-Zugang die Benutzung des ACME [https://certbot.eff.org/ Certbots]
Für Shell-Umgebungen wird Certbot empfohlen
* Er kann Zertifikate automatisch ohne Ausfallzeit erstellen und installieren
* Unterstützt automatische Abläufe ohne Ausfallzeit
* Er hat auch einen Expertenmodus für Leute, die keine Autokonfiguration möchten
* Alternativ können weitere ACME-Clients eingesetzt werden
* Er ist einfach zu benutzen, funktioniert auf vielen Betriebssystemen und hat eine großartige Dokumentation. [https://certbot.eff.org/ Besuchen Sie die Seite von Certbot], um passende Anleitungen für Ihr Betriebssystem und ihren Server zu erhalten
 
Wenn [https://certbot.eff.org/ Certbot] nicht ihren Anforderungen entspricht, oder Sie einen anderen Client verwenden möchten, gibt es [https://letsencrypt.org/de/docs/client-options/ viele weitere ACME-Clients zur Auswahl]
* Sobald Sie einen ACME-Client gewählt haben, können Sie in die dazugehörige Dokumentation verwenden


Wenn Sie mit unterschiedlichen ACME-Clients experimentieren, benutzen Sie [https://letsencrypt.org/de/docs/staging-environment/ die Staging-Umgebung], um zu verhindern, dass die [https://letsencrypt.org/de/docs/rate-limits/ Anfragelimits] überschritten werden
Für Tests kann die Staging-Umgebung genutzt werden, um Rate Limits nicht auszulösen


=== Ohne Shell-Zugriff ===
=== Ohne Shell-Zugriff ===
Der beste Weg, Let’s Encrypt ohne Shell-Zugriff zu benutzen, ist der eingebaute Support von Ihrem Hosting-Provider
Optimal ist die Nutzung integrierter Let’s-Encrypt-Unterstützung des Hosting-Providers
* Wenn Ihr Hosting-Provider Let’s Encrypt Unterstützung anbietet, dann kann er in Ihrem Namen freie Zertifikate anfordern, installieren und automatisch aktuell halten
* Zertifikate werden automatisch angefordert und erneuert
* Bei einigen Hosting-Providern müssen Sie diese Unterstützung einschalten
* Andere Provider machen dies automatisch für ihre Kunden
 
[https://community.letsencrypt.org/t/web-hosting-who-support-lets-encrypt/6920 Überprüfen Sie unsere Liste von Hosting-Providern], um zu sehen, ob Ihrer mit dabei ist
* Wenn das so ist, folgen Sie der Dokumentation, um Ihr Let’s Encrypt-Zertifikat einzurichten
 
Wenn Ihr Hosting Provider-Let’s Encrypt nicht unterstützt, können Sie ihn kontaktieren und Unterstützung anfragen
* Wir tun unser Bestes, um Let’s Encrypt-Unterstützung zu ermöglichen und Provider sind oft sehr froh, wenn dieser Vorschlag von ihren Kunden kommt!
 
Wenn Ihr Hosting-Provider Let’s Encrypt nicht integrieren möchte, aber das Hochladen von eigenen Zertifikaten unterstützt, können Sie Certbot auf Ihrem eigenen Rechner installieren und im [https://certbot.eff.org/docs/using.html#manual manuellen Modus] benutzen
* Im manuellen Modus laden Sie eine spezielle Datei auf Ihre Website, um zu beweisen, dass Sie die Kontrolle über diese haben
* Certbot wird dann ein Zertifikat abrufen, welches Sie dann zu Ihrem Hosting-Provider hochladen können
* Wir empfehlen diese Methode nicht, denn sie kostet viel Zeit und Sie müssen sie mehrmals im Jahr wiederholen, da Ihr Zertifikat abläuft
* Für viele Benutzer ist es besser, Let’s Encrypt-Unterstützung von ihrem Hosting-Provider anzufordern oder zu einem anderen Anbieter zu wechseln
 
== Hilfe erhalten ==
Wenn Sie Fragen haben zur Auswahl eines ACME-Clients, zur Benutzung eines besonderen Clients oder eine andere Frage bezüglich Let’s Encrypt haben, können Sie gerne unser [https://community.letsencrypt.org/ hilfreiches Community Forum] besuchen
 
== Wie es funktioniert ==
Das Ziel von Let’s Encrypt und des [https://tools.ietf.org/html/rfc8555 ACME-Protokolls] besteht darin, die Einrichtung eines HTTPS-Servers zu ermöglichen, der automatisch ein vertrauenswürdiges Browserzertifikat ohne menschliches Eingreifen erhält
* Dies wird durch Ausführen eines Zertifikatsverwaltungsagenten auf dem Webserver erreicht
 
Um zu verstehen, wie die Technologie funktioniert, gehen wir die Einrichtung von <tt>https://example.com/</tt> mit einem Zertifikatsverwaltungsagenten durch, der Let’s Encrypt unterstützt
 
Dieser Prozess umfasst zwei Schritte
* Zunächst weist der Agent der Zertifizierungsstelle nach, dass der Webserver eine Domain kontrolliert
* Anschließend kann der Agent Zertifikate für diese Domain anfordern, erneuern und widerrufen


== Domain-Validierung ==
Falls keine Integration vorhanden ist, kann ein Zertifikat manuell erzeugt und anschließend beim Provider hochgeladen werden
Let’s Encrypt identifiziert den Serveradministrator anhand des öffentlichen Schlüssels
* Dieser Ansatz ist aufwendig und muss regelmäßig wiederholt werden. Gilt als Notlösung
* Wenn die Agentensoftware zum ersten Mal mit Let’s Encrypt interagiert, generiert sie ein neues Schlüsselpaar und weist der Let’s Encrypt-Zertifizierungsstelle nach, dass der Server eine oder mehrere Domain kontrolliert
* Dies ist vergleichbar mit dem traditionellen CA-Verfahren, bei dem ein Konto erstellt und diesem Konto Domains hinzugefügt werden


Um den Prozess zu starten, fragt der Agent die Let’s Encrypt-Zertifizierungsstelle, was zu tun ist, um zu beweisen, dass sie <tt>example.com</tt> kontrolliert
== ACME-Challenge-Typen ==
* Die Let’s Encrypt-Zertifizierungsstelle prüft den angeforderten Domainnamen und gibt eine oder mehrere Herausforderungen heraus
Für die Domainvalidierung stehen mehrere Verfahren zur Verfügung. Auswahl und Einsatz hängen von Infrastruktur, DNS-Zugriff und Port-Verfügbarkeit ab
* Es gibt verschiedene Möglichkeiten, mit denen der Agent die Kontrolle über die Domain nachweisen kann
* Beispielsweise kann die Zertifizierungsstelle dem Agenten die Wahl zwischen folgenden Optionen geben:* Bereitstellung eines DNS-Eintrags unter <tt>example.com</tt> oder
* Bereitstellung einer HTTP-Ressource unter einer bekannten URI unter <tt>https://example.com/</tt>


Neben den Herausforderungen bietet die Let’s Encrypt-Zertifizierungsstelle auch eine Nonce, die der Agent mit seinem privaten Schlüsselpaar signieren muss, um zu beweisen, dass er das Schlüsselpaar kontrolliert
{| class="wikitable options big"
! Methode
! Port
! Vorteile
! Nachteile
|-
| HTTP-01
| Port 80
|
* Einfach einzurichten
* Kompatibel mit den meisten Webservern
* Automatisierbar
|
* Erfordert offenen Port 80
* Probleme hinter CDN/Reverse-Proxy möglich
* Nicht nutzbar für Wildcard-Zertifikate
|-
| DNS-01
| TXT-Record
|
* Ermöglicht Ausstellung von Wildcard-Zertifikaten
* Unabhängig von Ports oder Webserver
* Sehr flexibel bei komplexen Infrastrukturen
|
* Erfordert DNS-API oder manuellen Eingriff
* DNS-Propagation kann Verzögerungen verursachen
|-
| TLS-ALPN-01
| Port 443
|
* Keine Abhängigkeit von Port 80
* Funktioniert hinter bestimmten Proxies besser
|
* Benötigt direkte Kontrolle über TLS-Konfiguration
* Nicht überall unterstützt
|}
 
== Funktionsweise von ACME ==


[[Image:Bild1.png|top|alt="Aufforderung zur Validierung von example.com stellen"]]
=== Architektur ===
Der ACME-Ablauf folgt festen Objekten und Schritten:


Die Agentensoftware erfüllt eine der gestellten Herausforderungen
* '''Account Key''' – kryptografische Identität des Clients
* Nehmen wir an, sie ist in der Lage, die zweite Aufgabe oben auszuführen: Sie erstellt eine Datei in einem angegebenen Pfad auf der Website <tt>https://example.com</tt>
* '''Order''' – Anforderung eines oder mehrerer Zertifikate
* Der Agent signiert die bereitgestellte Nonce außerdem mit seinem privaten Schlüssel
* '''Authorization''' – Nachweis der Kontrolle für jede Domain 
* Nachdem der Agent diese Schritte ausgeführt hat, benachrichtigt er die Zertifizierungsstelle, dass sie zur Validierung bereit ist
* '''Challenge''' – konkrete Prüfaufgabe (HTTP-01, DNS-01, TLS-ALPN-01)
* '''Finalization''' – Übermittlung des CSR
* '''Certificate''' – Ausstellung des Zertifikats


Dann ist es die Aufgabe der Zertifizierungsstelle, zu überprüfen, ob die Aufforderungen erfüllt sind
Diese Struktur entspricht dem ACME-Standard (RFC 8555)
* Die Zertifizierungsstelle überprüft die Signatur auf der Nonce und versucht, die Datei vom Webserver herunterzuladen und sicherzustellen, dass sie den erwarteten Inhalt hat


[[Image:Bild2.png|top|alt="Erfordert Autorisierung um für example.com zu agieren"]]
=== Domain-Validierung ===
Der Client erzeugt ein Schlüsselpaar und fordert Validierungsaufgaben an.
* Nach Bereitstellung der Challenge-Ressourcen prüft die Zertifizierungsstelle deren Erfüllung.  
* Bei Erfolg gilt der Account Key als autorisiert.


Wenn die Signatur über die Nonce gültig ist und die Herausforderungen ausgecheckt werden, ist der durch den öffentlichen Schlüssel identifizierte Agent berechtigt, die Zertifikatsverwaltung für <tt>example.com</tt> durchzuführen
=== Zertifikatausstellung und Widerruf ===
* Wir nennen das Schlüsselpaar, dass der Agent ein "autorisiertes Schlüsselpaar" für <tt>example.com</tt> verwendet hat
Zur Ausstellung wird eine Zertifikatsanforderung (CSR) übermittelt
* Nach erfolgreicher Prüfung wird ein Zertifikat zurückgegeben
* Widerrufe erfolgen über signierte Widerrufsanfragen
* Entsprechende Informationen werden über die üblichen Kanäle publiziert


== Zertifikatausstellung und Widerruf ==
== Rate Limits ==
Wenn der Agent über ein autorisiertes Schlüsselpaar verfügt, ist das Anfordern, Erneuern und Sperren von Zertifikaten ganz einfach: Senden Sie einfach Zertifikatsverwaltungsnachrichten und signieren Sie sie mit dem autorisierten Schlüsselpaar
Let’s Encrypt setzt verschiedene Beschränkungen ein, um Missbrauch zu verhindern. Für einen stabilen Betrieb sollte die automatisierte Erneuerung auf die Staging-Umgebung getestet werden.


Um ein Zertifikat für die Domain zu erhalten, erstellt der Agent eine PKCS#10-Anforderung [https://tools.ietf.org/html/rfc2986 Zertifikatsignierungsanforderung], in der die Let’s Encrypt-Zertifizierungsstelle aufgefordert wird, ein Zertifikat für <tt>example.com</tt> mit einem angegebenen öffentlichen Schlüssel auszustellen
Limits:
* Wie üblich enthält der CSR eine Signatur des privaten Schlüssels, der dem öffentlichen Schlüssel in dem CSR entspricht
* Begrenzte Anzahl neuer Zertifikate pro registrierter Domain pro Woche.
* Der Agent signiert außerdem die gesamte CSR mit dem autorisierten Schlüssel für <tt>example.com</tt>, damit die Let’s Encrypt-Zertifizierungsstelle weiß, dass sie autorisiert ist
* Begrenzung fehlerhafter Validierungsversuche pro Stunde. 
* Begrenzte Anzahl neuer Orders pro Account innerhalb kurzer Zeiträume.


Wenn die Let’s Encrypt-Zertifizierungsstelle die Anforderung erhält, werden beide Signaturen überprüft
Für Tests steht eine Staging-Umgebung mit deutlich höheren Limits zur Verfügung.
* Wenn alles gut aussieht, wird ein Zertifikat für <tt>example.com</tt> mit dem öffentlichen Schlüssel aus dem CSR ausgestellt und an den Agenten zurückgegeben


[[Image:Bild3.png|top|alt="Anfordern eines Zertifikats für example.com"]]
; Staging-Umgebung 
Die Staging-Umgebung ist eine separate ACME-Testinfrastruktur mit hohen Limits und nicht vertrauenswürdigen Testzertifikaten. Sie dient zur sicheren Überprüfung von Validierung, Konfiguration und Automatisierung, ohne produktive Limits zu belasten.


Der Widerruf funktioniert auf ähnliche Weise
; Aktivierung der Staging-Umgebung 
* Der Agent unterzeichnet eine Sperranforderung mit dem für <tt>example.com</tt> autorisierten Schlüsselpaar, und die Let’s Encrypt-Zertifizierungsstelle überprüft, ob die Anforderung autorisiert ist
Die Nutzung erfolgt über den Staging-ACME-Endpunkt oder entsprechende Client-Optionen:
* In diesem Fall werden Sperrinformationen in den normalen Sperrkanälen (beispielsweise
* OCSP) veröffentlicht, sodass vertrauende Parteien wie Browser wissen können, dass sie das widerrufene Zertifikat nicht akzeptieren sollten


[[Image:Bild4.png|top|Anfrage zum Widerruf eines Zertifikats für example.com
* Certbot: ''--staging'' 
* ACME-Endpoint:
<syntaxhighlight lang="ini" copy line>
https://acme-staging-v02.api.letsencrypt.org/directory
</syntaxhighlight>
* Certbot-Erneuerungstest: ''certbot renew --dry-run''


== Beste Praxis ==
== Beste Praxis ==
;Port 80 offen halten
* Port 80 sollte für '''HTTP-01'''-Challenges und Weiterleitungen auf HTTPS offen bleiben. 
Gelegentlich erhalten wir Berichte von Personen, die Probleme mit der Verwendung des Aufforderungstyps HTTP-01 haben, weil sie den Port 80 für ihren Webserver durch eine Firewall geschützt haben
* Das Schließen von Port 80 reduziert das Sicherheitsrisiko kaum. 
* Wir empfehlen, dass alle Server, die für die allgemeine Webnutzung vorgesehen sind, sowohl HTTP auf Port 80 als auch HTTPS auf Port 443 anbieten
* Falls Port 80 durch den Anbieter blockiert ist, können '''DNS-01''' oder '''TLS-ALPN-01''' eingesetzt werden.
* Sie sollten auch Weiterleitungen für alle Port 80-Anforderungen und möglicherweise einen HSTS-Header (auf Port 443-Anforderungen) senden
 
Das Zulassen von Port 80 führt nicht zu einem größeren Angriffsvektor auf Ihrem Server, da Anforderungen an Port 80 im Allgemeinen von derselben Software bedient werden wie auf Port 443
 
Das Schließen von Port 80 verringert nicht das Risiko für eine Person, die versehentlich Ihre Webseite über HTTP besucht
* Unter normalen Umständen würde diese Person eine Weiterleitung zu HTTPS erhalten, und der nachfolgende Datenverkehr wird geschützt
* Wenn diese Person einem aktiven Man-In-The-Middle-Angriff (MITM) unterliegt, antwortet der MITM auf Port 80, sodass Ihre Site niemals die Möglichkeit hat, mit "Verbindung abgelehnt" zu antworten
 
Wenn Sie den Port 80 offen halten, um eine Weiterleitung zu ermöglichen, können die Benutzer die richtige Version Ihrer Webseite (die HTTPS-Version) aufrufen
* Es gibt verschiedene Situationen, auf die Sie keinen Einfluss haben und die möglicherweise kurzzeitig jemanden auf der HTTP-Version Ihrer Webseite landen - beispielsweise die automatische Verknüpfung in E-Mails oder die manuelle Eingabe eines Domainnamens
* Es ist für sie besser, eine Weiterleitung als einen Fehler zu erhalten
 
Leider haben Sie möglicherweise keine Kontrolle darüber, ob Port 80 für Ihre Webseite blockiert ist
* Einige (hauptsächlich private) Internetdienstanbieter blockieren Port 80 aus verschiedenen Gründen
* Wenn Ihr ISP dies tut, Sie jedoch weiterhin Zertifikate von Let’s Encrypt erhalten möchten, haben Sie zwei Möglichkeiten: Sie können DNS-01-Challenges verwenden oder Sie können einen der Clients verwenden, der TLS-ALPN-01-Herausforderungen unterstützt (auf Port 443)


[[Kategorie:Let's Encrypt]]
[[Kategorie:Let's Encrypt]]

Aktuelle Version vom 10. Dezember 2025, 14:34 Uhr

Überblick

Let’s Encrypt ermöglicht die automatisierte Ausstellung und Erneuerung von TLS-Zertifikaten über das ACME-Protokoll (RFC 8555)

  • Ein ACME-Client weist die Kontrolle über eine Domain nach und ruft ein Zertifikat ab
  • Zertifikate besitzen eine maximale Gültigkeit von 90 Tagen, daher sollte eine automatische Erneuerung konfiguriert werden

ACME-Client-Implementierungen

Zur Nutzung von Let’s Encrypt muss eine ACME-Clientsoftware eingesetzt werden

  • Es stehen zahlreiche Clients von Drittanbietern zur Verfügung.
  • Keine Überprüfung oder Zertifizierung dieser Clients durch Let’s Encrypt
  • Browserbasierte Clients werden nicht berücksichtigt, da sie manuelle Erneuerungen fördern

Certbot

Für die meisten Szenarien wird Certbot empfohlen.

  • Unterstützt automatisiertes Ausstellen, Installieren und Erneuern von Zertifikaten
  • Bietet Auto-Konfiguration sowie Expertenmodus.
  • Umfangreiche Dokumentation und breite Betriebssystemunterstützung

ACMEv1 / ACMEv2

Alle unterstützten ACME-Clients verwenden ACMEv2 (RFC 8555)

  • ACMEv1 wurde am 1. Juni 2021 vollständig abgeschaltet

Erste Schritte

Zur Aktivierung von HTTPS wird ein Zertifikat benötigt, das über ACME angefordert wird

  • Der Nachweis der Domainkontrolle erfolgt über einen ACME-Client oder über Integrationen beim Hosting-Provider
  • Entscheidend ist, ob Shell-Zugang verfügbar ist

Mit Shell-Zugang

Für Shell-Umgebungen wird Certbot empfohlen

  • Unterstützt automatische Abläufe ohne Ausfallzeit
  • Alternativ können weitere ACME-Clients eingesetzt werden

Für Tests kann die Staging-Umgebung genutzt werden, um Rate Limits nicht auszulösen

Ohne Shell-Zugriff

Optimal ist die Nutzung integrierter Let’s-Encrypt-Unterstützung des Hosting-Providers

  • Zertifikate werden automatisch angefordert und erneuert

Falls keine Integration vorhanden ist, kann ein Zertifikat manuell erzeugt und anschließend beim Provider hochgeladen werden

  • Dieser Ansatz ist aufwendig und muss regelmäßig wiederholt werden. Gilt als Notlösung

ACME-Challenge-Typen

Für die Domainvalidierung stehen mehrere Verfahren zur Verfügung. Auswahl und Einsatz hängen von Infrastruktur, DNS-Zugriff und Port-Verfügbarkeit ab

Methode Port Vorteile Nachteile
HTTP-01 Port 80
  • Einfach einzurichten
  • Kompatibel mit den meisten Webservern
  • Automatisierbar
  • Erfordert offenen Port 80
  • Probleme hinter CDN/Reverse-Proxy möglich
  • Nicht nutzbar für Wildcard-Zertifikate
DNS-01 TXT-Record
  • Ermöglicht Ausstellung von Wildcard-Zertifikaten
  • Unabhängig von Ports oder Webserver
  • Sehr flexibel bei komplexen Infrastrukturen
  • Erfordert DNS-API oder manuellen Eingriff
  • DNS-Propagation kann Verzögerungen verursachen
TLS-ALPN-01 Port 443
  • Keine Abhängigkeit von Port 80
  • Funktioniert hinter bestimmten Proxies besser
  • Benötigt direkte Kontrolle über TLS-Konfiguration
  • Nicht überall unterstützt

Funktionsweise von ACME

Architektur

Der ACME-Ablauf folgt festen Objekten und Schritten:

  • Account Key – kryptografische Identität des Clients
  • Order – Anforderung eines oder mehrerer Zertifikate
  • Authorization – Nachweis der Kontrolle für jede Domain
  • Challenge – konkrete Prüfaufgabe (HTTP-01, DNS-01, TLS-ALPN-01)
  • Finalization – Übermittlung des CSR
  • Certificate – Ausstellung des Zertifikats

Diese Struktur entspricht dem ACME-Standard (RFC 8555)

Domain-Validierung

Der Client erzeugt ein Schlüsselpaar und fordert Validierungsaufgaben an.

  • Nach Bereitstellung der Challenge-Ressourcen prüft die Zertifizierungsstelle deren Erfüllung.
  • Bei Erfolg gilt der Account Key als autorisiert.

Zertifikatausstellung und Widerruf

Zur Ausstellung wird eine Zertifikatsanforderung (CSR) übermittelt

  • Nach erfolgreicher Prüfung wird ein Zertifikat zurückgegeben
  • Widerrufe erfolgen über signierte Widerrufsanfragen
  • Entsprechende Informationen werden über die üblichen Kanäle publiziert

Rate Limits

Let’s Encrypt setzt verschiedene Beschränkungen ein, um Missbrauch zu verhindern. Für einen stabilen Betrieb sollte die automatisierte Erneuerung auf die Staging-Umgebung getestet werden.

Limits:

  • Begrenzte Anzahl neuer Zertifikate pro registrierter Domain pro Woche.
  • Begrenzung fehlerhafter Validierungsversuche pro Stunde.
  • Begrenzte Anzahl neuer Orders pro Account innerhalb kurzer Zeiträume.

Für Tests steht eine Staging-Umgebung mit deutlich höheren Limits zur Verfügung.

Staging-Umgebung

Die Staging-Umgebung ist eine separate ACME-Testinfrastruktur mit hohen Limits und nicht vertrauenswürdigen Testzertifikaten. Sie dient zur sicheren Überprüfung von Validierung, Konfiguration und Automatisierung, ohne produktive Limits zu belasten.

Aktivierung der Staging-Umgebung

Die Nutzung erfolgt über den Staging-ACME-Endpunkt oder entsprechende Client-Optionen:

  • Certbot: --staging
  • ACME-Endpoint:
https://acme-staging-v02.api.letsencrypt.org/directory
  • Certbot-Erneuerungstest: certbot renew --dry-run

Beste Praxis

  • Port 80 sollte für HTTP-01-Challenges und Weiterleitungen auf HTTPS offen bleiben.
  • Das Schließen von Port 80 reduziert das Sicherheitsrisiko kaum.
  • Falls Port 80 durch den Anbieter blockiert ist, können DNS-01 oder TLS-ALPN-01 eingesetzt werden.