DNS Certification Authority Authorization

Abkürzung: CAA

CAA ist der einzige Mechanismus im Zertifikatsumfeld, der vorher greift. Sperrlisten, OCSP und Certificate Transparency setzen alle erst ein, wenn ein falsches Zertifikat schon existiert.

Das Problem, das CAA angeht

Im Vertrauensspeicher eines Browsers liegen die Wurzelzertifikate von weit über hundert Stellen aus aller Welt. Jede einzelne davon kann technisch ein Zertifikat für jede beliebige Domain ausstellen — auch für eine, mit der sie nie etwas zu tun hatte.

Daraus folgt, dass die Sicherheit aller Domains an der schwächsten dieser Stellen hängt. Die Praxis hat das bestätigt: 2011 wurden über eine kompromittierte niederländische Stelle gefälschte Zertifikate für Google-Dienste ausgestellt und zur Überwachung in Iran eingesetzt. 2013 gab eine türkische Stelle versehentlich Zertifikate mit Ausstellbefugnis heraus, mit denen sich beliebige Zertifikate erzeugen ließen.

Ein Domaininhaber hatte dagegen kein Mittel. CAA gibt ihm eines: Er erklärt im DNS, wer für ihn ausstellen darf, und alle anderen müssen ablehnen.

Was der Eintrag sagt

example.net.  IN  CAA  0 issue "letsencrypt.org"
example.net.  IN  CAA  0 issuewild "letsencrypt.org"
example.net.  IN  CAA  0 iodef "mailto:tls@example.net"

Jeder Eintrag besteht aus drei Teilen: einem Flag-Byte, einer Marke und einem Wert.

issue nennt eine Stelle, die Zertifikate ausstellen darf. Mehrere Einträge sind erlaubt.

issuewild gilt eigens für Wildcard-Zertifikate. Fehlt die Marke, gilt issue auch für Wildcards — wer Wildcards ausschließen will, setzt issuewild ";".

iodef nennt eine Adresse, an die eine Stelle einen abgelehnten Antrag melden soll.

Ein leerer Wert in Form eines Semikolons verbietet die Ausstellung ganz:

example.net.  IN  CAA  0 issue ";"

Das Flag-Byte steuert, wie eine Stelle mit unbekannten Marken umgeht. Steht dort 128, darf sie nicht ausstellen, wenn sie die Marke nicht versteht.

Wie die Prüfung abläuft

Die Zertifizierungsstelle fragt den CAA-Satz zum Zeitpunkt der Ausstellung ab — nicht der Client, nicht der Browser.

Findet sie keinen Eintrag für den angefragten Namen, arbeitet sie sich im Baum nach oben: von shop.example.net zu example.net, dann weiter. Der erste gefundene Satz gilt; er ersetzt alle darüberliegenden, statt sie zu ergänzen. Wer für eine Unterdomain einen eigenen Satz hinterlegt, muss dort also alle zulässigen Stellen erneut nennen.

Bleibt die Suche ohne Treffer, gibt es keine Beschränkung und jede Stelle darf ausstellen. CAA wirkt deshalb nur dort, wo es gesetzt ist — das Fehlen des Eintrags ist der Normalfall, nicht ein Verbot.

Für Zertifizierungsstellen ist die Prüfung seit 2017 durch die Regeln des CA/Browser Forums verbindlich. Sie ist damit keine freiwillige Höflichkeit, sondern Voraussetzung dafür, im Vertrauensspeicher zu bleiben.

Was CAA nicht leistet

Es wirkt nur bei regelkonformen Stellen. Eine kompromittierte oder böswillige Stelle kann die Abfrage einfach überspringen. CAA schützt also vor dem Versehen und vor der Nachlässigkeit, nicht vor dem Angriff — genau wie die Sperrverfahren, nur am anderen Ende des Lebenszyklus.

Kein Client prüft es. Der Browser liest keine CAA-Einträge. Ein Zertifikat, das unter Verletzung des Eintrags ausgestellt wurde, ist technisch einwandfrei und wird akzeptiert. Entdeckt wird so etwas über Certificate Transparency, also wiederum im Nachhinein.

Ohne DNSSEC ist die Antwort fälschbar. Wer die DNS-Antwort auf dem Weg zur Zertifizierungsstelle manipulieren kann, hebelt die Beschränkung aus. CAA entfaltet seine Wirkung erst zusammen mit signierten Zonen.

Praxis

Der häufigste Stolperpunkt entsteht bei der Automatisierung. Wer CAA setzt und später den Aussteller wechselt oder einen zweiten hinzunimmt, bekommt eine Fehlermeldung über eine durch CAA verhinderte Ausstellung — und sucht sie zunächst beim Antragsverfahren statt im DNS.

Darum gehören alle Stellen in den Satz, die man tatsächlich nutzt, einschließlich der für Codesignatur oder E-Mail. Für größere Umgebungen lässt sich die Erlaubnis zusätzlich an ein bestimmtes Konto beim Aussteller und an ein bestimmtes Prüfverfahren binden — damit darf nicht jeder Kunde derselben Stelle, sondern nur das eigene Konto ausstellen.

Prüfen lässt sich der Satz unmittelbar:

dig +short CAA example.net

Erstellt: