Mit TLSA kann man für eine Domain im DNS festlegen, welche Zertifizierungsstelle für die Domain Zertifikate ausstellen darf (Eintrag mit 2 1 1) oder welcher Schlüssel (Eintrag mit 3 1 1) für TLS gilt. Auf diesem Weg kann sich ein Nutzer bei einer zweiten Quelle (DNS) über die Echtheit eines angebotenen Zertifikats informieren. Wenn dabei DNSSec genutzt wird, ist die Information aus der zweiten Quelle abgesichert.

Da sich bei Letsencrypt regelmäßig der Schlüssel für TLS ändert, müsste man die Anpassung des Eintrags im DNS automatisieren. Leider habe ich dafür nicht die Möglichkeit und kann im DNS als TLSA-Eintrag nur das Zertifikat von Letsencrypt festlegen.

Durch einen Wechsel der Zwischenzertifizierungsstellen bei Let's Encrypt habe ich gelernt, dass man auch mehrere TLSA-Einträge hinterlegen kann, um genau dem Umstand eines Wechsels Rechnung zu tragen.

Im DNS habe ich einen Wildcard-Eintrag (*._tcp) erstellt, da ich das Zertifikat für alle Dienste der Domain verwende.

% resolvectl tlsa jo-so.de
_443._tcp.jo-so.de IN TLSA 2 1 1 e5545e211347241891c554a03934cde9b749664a59d26d615fe58f77990f2d03
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0
_443._tcp.jo-so.de IN TLSA 2 1 1 60b87575447dcba2a36b7d11ac09fb24a9db406fee12d2cc90180517616e8a18
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0
_443._tcp.jo-so.de IN TLSA 2 1 1 8d02536c887482bc34ff54e41d2ba659bf85b341a0a20afadb5813dcfbcf286d
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0
_443._tcp.jo-so.de IN TLSA 2 1 1 276fe8a8c4ec7611565bf9fce6dcace9be320c1b5bea27596b2204071ed04f10
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0
_443._tcp.jo-so.de IN TLSA 2 1 1 bd936e72b212ef6f773102c6b77d38f94297322efc25396bc3279422e0c89270
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0

-- Information acquired via protocol DNS in 1.2ms.
-- Data is authenticated: yes
% resolvectl tlsa jo-so.de:25
_25._tcp.jo-so.de IN TLSA 2 1 1 8d02536c887482bc34ff54e41d2ba659bf85b341a0a20afadb5813dcfbcf286d
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0
_25._tcp.jo-so.de IN TLSA 2 1 1 bd936e72b212ef6f773102c6b77d38f94297322efc25396bc3279422e0c89270
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0
…

Webseite zum Generieren des TLSA-Eintrags

Prüfungen der TLSA-Einträge

Siehe auch: Certbot mit Nginx, Netzwerkverwaltung mit Systemd