Mit TLSA kann man für eine Domain im DNS festlegen, welche Zertifizierungsstelle für die Domain Zertifikate ausstellen darf oder welcher Schlüssel 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 bei Letsencrypt regelmäßig den 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.

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 60b87575447dcba2a36b7d11ac09fb24a9db406fee12d2cc90180517616e8a18
        -- Cert. usage: Trust anchor assertion
        -- Selector: SubjectPublicKeyInfo
        -- Matching type: SHA-256 -- link: wlp59s0

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

-- Information acquired via protocol DNS in 77.2ms.
-- Data is authenticated: yes

Prüfungen der TLSA-Einträge

Siehe auch: certbot-nginx, network-management-with-systemd

Art