Transport Layer Security (TLS) is a cryptographic protocol that provides confidentiality, integrity, and endpoint authentication for data transmitted between applications over networks, with TLS 1.3 offering improved security by removing legacy algorithms and ensuring forward secrecy. DNS over TLS, defined in RFC 7858, encrypts DNS queries on TCP port 853 to prevent observers from reading or modifying queries, representing a critical advancement for protecting core network services alongside HTTPS, email, and APIs. Poor TLS management causes operational outages and security exposures through expired certificates, outdated protocol versions, weak cipher suites, and unmanaged private keys, requiring organizations to maintain comprehensive certificate inventories, automated renewal processes, and enforced minimum protocol version policies across all services.
So funktioniert TLS
TLS beginnt mit einem Handshake, bei dem sich Client und Server auf Protokollparameter einigen, den Server authentifizieren und gemeinsame Sitzungsschlüssel ableiten. Nach dem Handshake werden Anwendungsdaten in verschlüsselten und integritätsgeschützten Datensätzen gesendet.
- Client Hello: Der Client öffnet eine TCP-Verbindung und sendet die von ihm unterstützten TLS-Versionen, Verschlüsselungssuiten und Informationen zum Schlüsselaustausch.
- Server-Hello und Zertifikat: Der Server wählt die Parameter aus und sendet sein Zertifikat, damit der Client seine Identität überprüfen kann.
- Zertifikatsvalidierung: Der Client überprüft, ob das Zertifikat auf eine vertrauenswürdige Zertifizierungsstelle zurückgeführt werden kann, nicht abgelaufen ist und mit dem angeforderten Namen übereinstimmt.
- Schlüsselaustausch: Beide Seiten nutzen einen kurzlebigen Schlüsselaustausch, um dieselben Sitzungsschlüssel abzuleiten, ohne diese über das Netzwerk zu senden.
- Verschlüsselte Anwendungsdaten: Die Endpunkte wechseln zu der ausgehandelten Verschlüsselungsmethode und tauschen Anwendungsdaten in geschützten Datensätzen aus.
TLS 1.3, definiert in RFC 8446, verkürzt den Handshake und entfernt ältere, schwächere Algorithmen. Mutual TLS fügt ein Client-Zertifikat hinzu, damit der Server auch den Client authentifizieren kann. Die oben genannten Schritte zeigen den üblichen Fall der Server-Authentifizierung.
Häufige TLS-Probleme
Ein Zertifikat, das ohne Verlängerung abläuft, führt zu Browserwarnungen und fehlgeschlagenen API-Aufrufen, oft zu unerwarteten Zeiten. Dienste mit vielen Endpunkten, wie beispielsweise Load Balancer und Verwaltungsschnittstellen, werden dabei am häufigsten übersehen.
Ein Server, der nur sein eigenes Zertifikat sendet und das Zwischenzertifikat weglässt, funktioniert in einigen Browsern, versagt jedoch bei Befehlszeilentools, Java-Clients und eingebetteten Geräten. Tests mit verschiedenen Client-Typen decken diese Lücke auf.
Clients lehnen ein Zertifikat ab, wenn der angeforderte Hostname nicht im Feld „Subject Alternative Name“ enthalten ist. Dies tritt häufig auf, wenn ein Dienst über eine IP-Adresse oder einen neuen Alias erreicht wird, den das Zertifikat nicht abdeckt.
Ältere Clients, die nur TLS 1.0 oder 1.1 unterstützen, oder Server, die die von einem Client angebotenen Verschlüsselungsalgorithmen deaktivieren, führen zu Handshake-Fehlern. In Paketaufzeichnungen wird in der Regel direkt nach dem „Client Hello“ eine Warnung angezeigt.
DNS-over-TLS-Clients schlagen fehl oder greifen auf unverschlüsseltes DNS zurück, wenn eine Firewall den TCP-Port 853 blockiert. Je nach Client-Einstellungen führt dies entweder zu einer fehlerhaften Auflösung oder zu einem unbemerkten Verlust der Verschlüsselung.