Herkömmliches TLS verifiziert nur den Server. Mutual TLS verifiziert beide Seiten. Grundlage der Zero-Trust-Architektur für Service-to-Service-Kommunikation.
Wann mTLS einsetzen¶
- Microservices-Kommunikation
- API-zu-API-Kommunikation
- IoT-Geräte → Server
- Zero-Trust-Umgebung
Erstellung der Zertifikate¶
CA¶
openssl genrsa -out ca-key.pem 4096 openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -days 3650 -subj “/CN=Internal CA”
Server-Zertifikat¶
openssl genrsa -out server-key.pem 2048 openssl req -new -key server-key.pem -out server.csr -subj “/CN=api.internal” openssl x509 -req -in server.csr -CA ca-cert.pem -CAkey ca-key.pem -out server-cert.pem -days 365
Client-Zertifikat¶
openssl genrsa -out client-key.pem 2048 openssl req -new -key client-key.pem -out client.csr -subj “/CN=service-a” openssl x509 -req -in client.csr -CA ca-cert.pem -CAkey ca-key.pem -out client-cert.pem -days 365
Nginx mTLS¶
server { listen 443 ssl; ssl_certificate /etc/ssl/server-cert.pem; ssl_certificate_key /etc/ssl/server-key.pem; ssl_client_certificate /etc/ssl/ca-cert.pem; ssl_verify_client on; }
Wichtigste Erkenntnis¶
mTLS verifiziert beide Seiten der Kommunikation. Für Microservices einen Service Mesh verwenden (Istio, Linkerd).