Bei normalem HTTPS weist nur der Server seine Identität mit einem Zertifikat nach. Der Client (Browser) ist anonym — der Server weiß nicht, wer sich verbindet.
Mutual TLS (mTLS) fügt einen zweiten Schritt hinzu: Auch der Client legt ein Zertifikat vor. Beide Seiten authentifizieren sich gegenseitig. Der Server überprüft das Zertifikat des Clients anhand einer vertrauenswürdigen CA, und der Client überprüft das des Servers — daher „mutual” (gegenseitig).
Reguläres TLS vs. Mutual TLS
| Reguläres TLS | Mutual TLS (mTLS) | |
|---|---|---|
| Server weist Identität nach | ✅ Zertifikat + CA-Signatur | ✅ Gleich |
| Client weist Identität nach | ❌ Anonym | ✅ Client-Zertifikat |
| Authentifizierung | Einseitig (nur Server) | Gegenseitig (beide) |
| Anwendungsfall | Öffentliche Websites | Interne APIs, Zero Trust |
| Client benötigt | Nur einen Browser | Zertifikat + privaten Schlüssel |
| Einrichtungskomplexität | Standard | Höher — Client-Zertifikate müssen verwaltet werden |
Wann mTLS eingesetzt wird
Service-zu-Service-Kommunikation
Microservices, die über das Netzwerk miteinander kommunizieren. mTLS stellt sicher, dass nur autorisierte Dienste sich verbinden können — nicht einfach jeder, der die URL kennt.
Service A ←──mTLS──→ Service B
Beide verifizieren: "Bist du wirklich der, der du vorgibst zu sein?"
Zero-Trust-Architektur
Bei Zero Trust wird keine Netzwerkverbindung standardmäßig als vertrauenswürdig eingestuft — selbst innerhalb des Unternehmensnetzwerks. mTLS ersetzt netzwerkbasiertes Vertrauen (Firewalls, VPNs) durch identitätsbasiertes Vertrauen (Zertifikate).
API-Sicherheit
Schützen Sie sensible APIs über einfache API-Schlüssel hinaus. Ein gestohlener API-Schlüssel kann von jedem verwendet werden. Ein Client-Zertifikat ist an einen bestimmten privaten Schlüssel gebunden — schwieriger zu stehlen und zu verwenden.
IoT-Geräteauthentifizierung
Geräte verbinden sich mit einem Backend über Client-Zertifikate, die während der Herstellung bereitgestellt werden. Der Server weiß, dass er mit einem echten Gerät kommuniziert, nicht mit einem gefälschten.
Wie mTLS funktioniert
- Client verbindet sich und initiiert den TLS-Handshake (wie bei normalem TLS)
- Server sendet sein Zertifikat — Client verifiziert es (wie bei normalem TLS)
- Server fordert Client-Zertifikat an — sendet eine
CertificateRequest-Nachricht - Client sendet sein Zertifikat — Server verifiziert es anhand einer vertrauenswürdigen CA
- Beide Seiten berechnen Sitzungsschlüssel und die verschlüsselte Kommunikation beginnt
Die Schritte 3–4 machen es „mutual” (gegenseitig).
Nginx mTLS-Konfiguration
server {
listen 443 ssl;
server_name api.example.com;
# Server-Zertifikat (wie bei normalem HTTPS)
ssl_certificate /etc/ssl/server-fullchain.pem;
ssl_certificate_key /etc/ssl/server-privkey.pem;
# Client-Zertifikat-Verifizierung
ssl_client_certificate /etc/ssl/client-ca.pem; # CA, die Client-Zertifikate signiert hat
ssl_verify_client on; # Client-Zertifikat erforderlich
# Optional: Client-Zertifikat-Infos an Ihre App weiterleiten
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-Client-Verify $ssl_client_verify;
}
mTLS im Vergleich zu anderen Authentifizierungsmethoden
| Methode | Sicherheitsstufe | Komplexität | Am besten für |
|---|---|---|---|
| API-Schlüssel | Niedrig (teilbar) | Niedrig | Öffentliche APIs, Ratenbegrenzung |
| OAuth/JWT | Mittel | Mittel | Benutzerorientierte APIs |
| mTLS | Hoch (kryptographisch gebunden) | Hoch | Service-zu-Service, Zero Trust |
| mTLS + JWT | Höchste | Hoch | Transport- und Anwendungsauthentifizierung |
mTLS und GetHTTPS
GetHTTPS stellt Server-Zertifikate aus — die Zertifikate, die Ihr Webserver verwendet, um seine Identität nachzuweisen. Das sind die Standard-SSL-Zertifikate, die von jeder HTTPS-Website verwendet werden.
Client-Zertifikate für mTLS werden typischerweise von einer privaten CA (der internen CA Ihrer Organisation) ausgestellt, nicht von einer öffentlichen CA wie Let’s Encrypt. Let’s Encrypt stellt keine Client-Zertifikate aus — sie stellen nur Server-Zertifikate für öffentliche Domains aus.
Häufig gestellte Fragen
Kann ich Let’s Encrypt für mTLS verwenden?
Für das Server-Zertifikat: ja. Für Client-Zertifikate: nein. Client-Zertifikate müssen von einer privaten CA ausgestellt werden, die Sie kontrollieren — damit Sie entscheiden, welche Clients autorisiert sind. Tools wie openssl, cfssl oder step-ca können als Ihre private CA fungieren.
Ist mTLS dasselbe wie „Client-Zertifikat-Authentifizierung”?
Ja. „Mutual TLS”, „mTLS”, „Two-Way TLS” und „Client-Zertifikat-Authentifizierung” bezeichnen alle dasselbe — beide Seiten legen während des TLS-Handshakes Zertifikate vor.
Ersetzt mTLS API-Schlüssel?
Es kann, aber sie dienen unterschiedlichen Zwecken. mTLS beweist die Transport-Level-Identität (welcher Dienst verbindet sich). API-Schlüssel/JWTs beweisen die Anwendungs-Level-Identität (welcher Benutzer/welche Berechtigung). Viele Systeme verwenden beides zusammen für Defense in Depth (gestaffelte Verteidigung).
Wo wird mTLS häufig eingesetzt?
Kubernetes (Service Mesh mit Istio/Linkerd), Cloudflare Access, AWS API Gateway (Mutual TLS), Googles BeyondCorp und die meisten Enterprise-Zero-Trust-Implementierungen.