Die Absicherung der Kommunikation zwischen Microservices wird zunehmend wichtiger, insbesondere in Umgebungen, in denen vertrauliche Daten verarbeitet werden. mTLS (mutual TLS) ermöglicht die Verschlüsselung und Authentifizierung zwischen Services und kann in Container-Setups durch sogenannte Sidecar-Container realisiert werden. In diesem Artikel betrachten wir, wie mTLS in Docker Compose implementiert werden kann, welche Herausforderungen auftreten und welche Best Practices zu beachten sind.
1. Grundlagen von mTLS
mTLS erweitert das klassische TLS um die gegenseitige Authentifizierung. Während bei TLS nur der Server ein Zertifikat präsentiert, müssen bei mTLS sowohl Client als auch Server ihre Identität über Zertifikate nachweisen.
Funktionsweise
- Server präsentiert sein Zertifikat, das vom Client geprüft wird.
- Client präsentiert ebenfalls sein Zertifikat, das vom Server verifiziert wird.
- Nur wenn beide Zertifikate gültig sind, wird die Verbindung aufgebaut.
2. Sidecar Pattern für Compose
Ein Sidecar ist ein zusätzlicher Container, der neben dem Hauptservice läuft und Cross-Cutting Concerns wie Logging, Monitoring oder Security übernimmt. Für mTLS kann ein Sidecar den TLS-Termination und Certificate Management übernehmen.
Beispiel-Setup
version: "3.9"
services:
app:
image: myapp:latest
networks:
- app-net
depends_on:
- envoy
envoy:
image: envoyproxy/envoy:v1.25
networks:
- app-net
volumes:
- ./certs:/etc/certs
command: >
/usr/local/bin/envoy -c /etc/envoy/envoy.yaml
networks:
app-net:
driver: bridge
Hier fungiert Envoy als Sidecar, das alle ein- und ausgehenden Verbindungen des Service „app“ über mTLS leitet.
3. Zertifikatsmanagement
Die sichere Verwaltung von Zertifikaten ist entscheidend. Folgende Ansätze werden empfohlen:
- Verwendung eines zentralen Certificate Authority (CA), z.B. Vault oder Step CA.
- Automatisches Rotieren der Zertifikate mit Tools wie cert-manager.
- Mounten der Zertifikate in Sidecar-Container über Docker Volumes.
CLI-Beispiel zum Testen von Zertifikaten
openssl s_client -connect app:443
-cert client.crt -key client.key
-CAfile ca.crt
4. Netzwerk-Isolation und Sidecar-Routing
Damit mTLS korrekt funktioniert, müssen alle Service-to-Service Calls über den Sidecar geleitet werden. Dies erfordert:
- Ein dediziertes Overlay- oder Bridge-Netzwerk in Compose.
- Routing-Regeln in Sidecar-Konfiguration, um Traffic transparent zu tunneln.
- Firewall- oder iptables-Regeln, die direkte Container-Verbindungen unterbinden.
Docker Compose Netzwerk-Konfiguration
networks:
app-net:
driver: bridge
driver_opts:
com.docker.network.bridge.name: br-app
Alle Services, die mTLS nutzen sollen, verbinden sich ausschließlich über dieses Netzwerk.
5. Debugging und Troubleshooting
Bei Sidecar-basiertem mTLS treten häufig folgende Probleme auf:
- Zertifikatsfehler: Prüfen von Ablaufdatum, Common Name und SANs.
- DNS-Auflösung: Container-Namen müssen korrekt im Overlay-Netzwerk aufgelöst werden.
- Port-Mapping: Der Sidecar muss als Proxy alle Ports des Hauptcontainers abbilden.
Beispiel-Debug
docker exec -it envoy curl -vk https://app:443
docker logs envoy
6. Best Practices
- Sidecar-Pattern nutzen, um mTLS zentral zu implementieren.
- Certificate Management automatisieren, um manuelle Fehler zu vermeiden.
- Nur interne Netzwerke freigeben, keine Services direkt host-exponieren.
- Monitoring für Sidecar und TLS-Verbindungen einrichten.
- Testen von Rollbacks und Neustarts, um Sidecar-Resilienz sicherzustellen.
Fazit
mTLS zwischen Container-Services erhöht die Sicherheit erheblich, insbesondere in Multi-Service-Umgebungen. Mit Sidecar-Containern in Docker Compose lassen sich TLS-Termination, Zertifikatsrotation und Policy Enforcement zentralisieren. Wichtig sind korrekt konfigurierte Netzwerke, automatisiertes Zertifikatsmanagement und umfassendes Monitoring, um die sichere Kommunikation zwischen Services zuverlässig zu gewährleisten.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

