Zum Inhalt

ACME im Detail · 18.7

DNS-01 Challenge Delegation (CNAME-Alias)

Bei der DNS-01 Challenge Delegation validiert die CA die Namen des Zertifikats über einen CNAME-Record, der in eine separate DNS-Zone zeigt, die Alias-Zone. In TLSPilot heisst das DNS-01 Alias Mode. Sie verwenden ihn, wenn TLSPilot nicht in die Zone Ihrer Domains schreiben soll:

  • Keine API-Rechte auf der Produktivzone: Das Team, das TLSPilot betreibt, erhält keinen Schreibzugriff auf die Zone der Firmendomains, zum Beispiel weil ein anderes Team oder ein externer Provider sie verwaltet.
  • Sicherheit: Das DNS-Credential in TLSPilot braucht nur Zugriff auf die Alias-Zone. Wird es missbraucht, kann ein Angreifer die Records Ihrer Produktivzone nicht ändern, zum Beispiel A- oder MX-Records.
  • Provider ohne API: Die Produktivzone liegt bei einem Provider ohne API, die TLSPilot unterstützt. Die Alias-Zone läuft bei einem unterstützten DNS-Provider.

So funktioniert es

Ein statischer CNAME-Record _acme-challenge.<name> in der Produktivzone zeigt auf _acme-challenge.<name>.<alias domain> in der Alias-Zone. In diesem Handbuch ist die Alias-Zone servicedomain.net: eine eigene Second-Level-Domain, sodass keine Alias-Subdomain nötig ist. In der Abbildung erscheint sie als Service-Zone. Fragt die CA den TXT-Record _acme-challenge.<name> ab, folgt sie dem CNAME, was normales DNS-Verhalten ist, und liest den TXT-Record in der Alias-Zone. TLSPilot schreibt den TXT-Record nur in der Alias-Zone, mit dem im Zertifikat gewählten DNS-Provider und DNS-Credential, und löscht ihn nach der Validierung wieder. Die Produktivzone wird nie geändert. Die CNAME-Records werden einmal erstellt und bleiben für alle Erneuerungen bestehen.

Jedes Zertifikat hat eine Alias-Domain, und der gewählte DNS-Provider und das DNS-Credential gelten für sie. Die Alias-Domain ist zugleich die Zone beim DNS-Provider.

Ablauf des DNS-01 Alias Mode mit zwei Namen und der Alias-Zone servicedomain.net
Ablauf des DNS-01 Alias Mode mit zwei Namen und der Alias-Zone servicedomain.net

Die Nummern entsprechen den nummerierten Schritten in der Abbildung:

  1. DoH-Prüfung: Beide CNAMEs existieren und zeigen auf servicedomain.net: Bevor TLSPilot etwas bestellt, fragt es die öffentlichen Resolver von Cloudflare und Google über DNS over HTTPS (DoH), ob _acme-challenge.shop.example.com und _acme-challenge.www.example.org als CNAME-Records in den Produktivzonen existieren und auf servicedomain.net zeigen. Fehlt ein CNAME-Record oder zeigt er woandershin, gibt es mehr als einen CNAME oder existiert unter demselben Namen ein TXT-Record, startet TLSPilot die Bestellung nicht und zeigt, welcher Record betroffen ist. Antwortet keiner der Resolver, protokolliert TLSPilot eine Warnung und fährt mit der Bestellung fort.
  2. Zertifikat bestellen, pro Name ein DNS-01-Token erhalten: TLSPilot bestellt das Zertifikat für shop.example.com und www.example.org bei der ACME-CA. Die CA liefert für jeden der beiden Namen eine DNS-01-Challenge mit eigenem Token.
  3. TXT-Records schreiben (gewählter Provider und gewähltes Credential): TLSPilot schreibt die Token-Werte als TXT-Records _acme-challenge.shop.example.com.servicedomain.net und _acme-challenge.www.example.org.servicedomain.net über die API des DNS-Providers, mit dem im Zertifikat gewählten DNS-Provider und DNS-Credential. Die Produktivzonen example.com und example.org werden nicht geändert.
  4. CA benachrichtigen: Challenge bereit: Nach der DNS-01-Propagationswartezeit teilt TLSPilot der CA mit, dass die Challenges zur Validierung bereit sind.
  5. _acme-challenge.<name> abfragen: Die CA fragt die TXT-Records _acme-challenge.shop.example.com und _acme-challenge.www.example.org im DNS ab. Die DNS-Auflösung folgt den statischen CNAME-Records in servicedomain.net, wo die CA die TXT-Records liest (gestrichelter Pfeil in der Abbildung).
  6. Validieren und Zertifikat ausstellen: Stimmen die TXT-Werte mit den Tokens beider Namen überein, bestätigt die CA die Challenges. TLSPilot sendet den CSR, und die CA stellt das Zertifikat aus, das TLSPilot mit seiner Kette herunterlädt.
  7. TXT-Records löschen: TLSPilot löscht die beiden TXT-Records in servicedomain.net über den DNS-Provider wieder. Die CNAME-Records in den Produktivzonen bleiben bestehen und werden für jede Erneuerung verwendet.

Beispiel

Wie in der Abbildung verwendet ein Zertifikat mit dem Common Name shop.example.com und dem SAN www.example.org die Alias-Domain servicedomain.net. Es braucht zwei CNAME-Records, einen pro Hostname. Die beiden Namen gehören zu zwei verschiedenen Produktivzonen, aber beide CNAME-Records zeigen auf dieselbe Alias-Zone:

CNAME-Records für den DNS-01 Alias Mode (Beispiel)
Namen im ZertifikatCNAME-Record in der ProduktivzoneZeigt auf (Alias-Zone)
shop.example.com_acme-challenge.shop.example.com_acme-challenge.shop.example.com.servicedomain.net
www.example.org_acme-challenge.www.example.org_acme-challenge.www.example.org.servicedomain.net

Ein Wildcard-Name teilt seinen CNAME-Record mit dem Namen ohne *.: Enthielte das Zertifikat zusätzlich example.com und *.example.com, teilten sich beide den einen CNAME-Record _acme-challenge.example.com → _acme-challenge.example.com.servicedomain.net.

In Zonendatei-Notation lautet der erste Record:

_acme-challenge.shop.example.com.  CNAME
    _acme-challenge.shop.example.com.servicedomain.net.

Hinweise

  • Eigene Alias-Zone: Sie richten die Alias-Zone selbst bei einem unterstützten DNS-Provider ein. iTrain hostet keine Alias-Zonen.
  • DNSSEC: DNSSEC ist nicht erforderlich. Ist es in der Produktivzone oder in der Alias-Zone eingeschaltet, muss die Kette über den CNAME- und den TXT-Record korrekt signiert sein, siehe Kapitel CAA-Records.
  • Alte TXT-Records: Entfernen Sie bestehende TXT-Records unter _acme-challenge.<name> in der Produktivzone, zum Beispiel von einer früheren Validierung. Ein Name mit CNAME-Record darf keine weiteren Records haben.
  • Negative Caching: Hat ein Resolver einen Namen abgefragt, bevor dessen CNAME-Record existierte, kann er die negative Antwort für die negative TTL der Zone behalten. Warten Sie nach dem Erstellen eines CNAME-Records einige Minuten, bevor Sie ihn prüfen oder das Zertifikat bestellen.
  • CAA: CAA-Records gelten für die ursprüngliche Domain. Die CA prüft CAA bei den Namen im Zertifikat und ihren übergeordneten Domains, nicht bei der Alias-Zone, siehe Kapitel CAA-Records.
  • Edition: Der DNS-01 Alias Mode ist überall verfügbar, wo DNS-01 verfügbar ist. Er braucht keine separate Lizenz.

Einrichtung in TLSPilot: Kapitel DNS-01 Alias Mode einrichten. Fehler und Lösungen: Kapitel Fehlerbehebung: DNS-01.

Schritt 1 des Ablaufs ist in TLSPilot sichtbar: Check CNAMEs fragt die öffentlichen Resolver über DoH ab und listet für jeden Namen auf, ob sein CNAME-Record in die Alias-Zone zeigt, siehe Abbildung Check CNAMEs bestätigt die CNAME-Records des DNS-01 Alias Mode.

Check CNAMEs bestätigt die CNAME-Records des DNS-01 Alias Mode
Check CNAMEs bestätigt die CNAME-Records des DNS-01 Alias Mode