CAA Records - ein umfassender Leitfaden zur Absicherung von Domains
CAA (Certificate Authority Authorization) ist ein wichtiges Werkzeug, um die Sicherheit von Webseiten und Online-Diensten zu erhöhen. Als Domaininhaber kannst du festlegen, welche Zertifizierungsstellen (CAs) berechtigt sind, SSL-Zertifikate für deine Domains auszustellen. Dadurch minimierst du das Risiko einer unbeabsichtigten oder böswilligen Zertifikatsausstellung durch unbefugte oder kompromittierte CAs.
CAA-Einträge werden im Domain Name System (DNS) gespeichert und ermöglichen es Domaininhabern, die Ausstellung von Zertifikaten zu regulieren. Diese Einträge wurden 2013 standardisiert und 2019 durch die RFCs 8659 und 8657 aktualisiert. Standardmäßig darf jede öffentliche Certificate Authority Zertifikate für beliebige Domains im öffentlichen DNS ausstellen, sofern der Besitz der Domain verifiziert wird.
Seit September 2017 verpflichtet das CA/Browser-Forum alle CAs, die CAA-Einträge einer Domain vor der Ausstellung eines Zertifikats zu berücksichtigen. CAA-Einträge reduzieren das Risiko der Zertifikatsausstellung, indem nur spezifische CAs autorisiert werden, Zertifikate für eine Domain auszustellen. Fehlt ein CAA-Eintrag, kann jede CA Zertifikate für die Domain ausstellen. CAA wird ausschließlich von CAs bei der Ausstellung des Zertifikats ausgewertet. Mit der Validierung von Zertifikaten hat es nichts zu tun.
» Nutze das CAA Record Abfrage Tool um die Einträge deiner Domains zu prüfen.
Funktionsweise von CAA Einträgen
CAA-Einträge werden im Domain Name System (DNS) gespeichert und von den CAs vor der Ausstellung eines Zertifikats hierarchisch ausgewertet, beginnend mit der spezifischen Domain, aufsteigend zu den übergeordneten Domains. CAA-Einträge für Subdomains haben Vorrang vor denen der übergeordneten Domains.
- Die spezifische Subdomain, z.B.
xyz.api.ssl-pilot.de
- Die zugehörige Domain, z.B.
api.ssl-pilot.de
- Die Hauptdomain, z.B.
ssl-pilot.de
So kannst du spezifische CAA Regeln für einzelne Subdomains definieren. Wenn “ssl-pilot.de” beispielsweise nur Let’s Encrypt für alle Subdomains erlauben soll, könnte eine Subdomain wie “api.ssl-pilot.de” gezielt auch andere CAs erlauben.
Wenn kein CAA-Eintrag vorhanden ist, kann jede CA Zertifikate für die Domain inkl. Subdomains ausstellen.
So erstellt man CAA Einträge
Die Erstellung von CAA Einträgen ist unkompliziert. Du benötigst lediglich einen DNS-Anbieter, der die Einstellung von CAA Einträgen unterstützt. Nachfolgend die grundlegende Syntax eines CAA Eintrags:
CAA <flags> <tag> <value>
Dabei gilt:
<flags>
: Ein binäres Flag (als Ganzzahl angegeben, z. B. 0
oder 128
), das im Zusammenhang mit zukünftigen Erweiterungen der CAA-Spezifikation steht. Es sollte fast immer den Wert 0
haben, was bedeutet, dass keine Flags gesetzt sind. Wenn gewünscht, kannst du Flags auf 128
setzen, was das „kritische Bit“ aktiviert und somit CAs anweist, die Ausstellung von Zertifikaten zu verwehren, wenn sie den Inhalt des Tag-Feldes nicht erkennen (weil sie die Erweiterung der Spezifikation noch nicht implementiert haben).
<tag>
: Das Tag ist eine Zeichenkette, die angibt, um welche Art von CAA-Eintrag es sich handelt: in den meisten Fällen entweder “issue” oder “issuewild”.
issue
: Definiert die Domain der CA, die zur Ausstellung von Zertifikaten berechtigt ist. Zum Beispiel würdeissue "letsencrypt.org"
Let’s Encrypt als autorisierte CA für die Domain festlegen.issuewild
: Ähneltissue
, ist aber speziell für Wildcard-Zertifikate. Wennissuewild
nicht gesetzt ist, wird der Wert vonissue
auch für Wildcard-Zertifikate verwendet.iodef
: Angabe von Kontaktinformationen für die Meldung von Verletzungen der CAA-Richtlinien. Z.b. eine E-Mail Adresse an die eine Warnung gesendet wird, beim versuch einer nicht autorisierten Zertifikatsausstellung.
<value>
: Der Wert der Eigenschaft, z. B. der Domainname der autorisierten CA.
Ein simples Beispiel könnte demnach so aussehen:
ssl-pilot.de CAA 0 issue "letsencrypt.org"
In diesem Fall wird Let’s Encrypt erlaubt, für “ssl-pilot.de” Zertifikate (und, da issuewild
fehlt, auch Wildcard-Zertifikate) auszustellen. Um zu kontrollieren, welche CAs auch Wildcard-Zertifikate ausstellen dürfen, füge einen weiteren Eintrag hinzu:
ssl-pilot.de CAA 0 issuewild "letsencrypt.org"
Hier ist die DNS Verwaltung von United Domains für die Domain ssl-pilot.de. An sich ganz simple, aber sehr effektiv.
Bei sslmate findest du nützliches Tool um CAA Einträge zu erstellen. Das tolle daran ist, dass du aus einer Liste relevanter Certificate Authorities auswählen kannst.
Vorteile der Verwendung von CAA Einträgen
Sichere Kontrolle: Durch das Anlegen von CAA Einträgen kannst du das Risiko minimieren, dass unerwünschte Zertifikate ausgestellt werden.
Vertrauenswürdige CAs: Du kannst nur Zertifizierungsstellen auswählen, denen du vertraust, wodurch das Risiko von Sicherheitsvorfällen verringert wird.
Nutzerfreundlichkeit: Viele DNS-Anbieter unterstützen mittlerweile die Einrichtung von CAA Einträgen und bieten einfache Generatoren zur Erstellung.
Best Practices für CAA Einträge
Multiple Einträge: Du kannst mehrere CAA Einträge erstellen, um verschiedenen CAs das Ausstellen von Zertifikaten zu erlauben. Diese Einträge werden additive behandelt.
Validierungsmethoden: Verwende Parameter wie „validationmethods“, um die Methoden zu kontrollieren, mit denen CAs deine Domain verifizieren dürfen. So kannst du beispielsweise mit
ssl-pilot.de CAA 0 issue "letsencrypt.org;validationmethods=dns-01
die Zertifikatsvalidierung auf DNS einschränken.E-Mail-Benachrichtigungen: Implementiere den „iodef“-Tag, um Meldungen zu erhalten, falls jemand versucht, ein Zertifikat über eine nicht autorisierte CA zu beantragen.
Fazit
CAA Einträge sind ein einfacher, aber effektiver Weg, die Sicherheit deiner Domain zu erhöhen. Indem du kontrollierst, welche CAs Zertifikate für deine Domains ausstellen dürfen, minimierst du das Risiko von Missbrauch. Die Implementierung von CAA Einträgen sollte Teil jeder Sicherheitsstrategie für Domaininhaber sein.
» Nutze das CAA Record Abfrage Tool um die Einträge deiner Domains zu prüfen.
Quellenangaben: