c't 5/2020
S. 168
Praxis
TCP-Routing mit Træfik

TCP-Einweiser

TLS-ZertifikateTræfik 2 für Container jenseits von HTTPS

Wer viele verschlüsselte Dienste auf einem Server betreiben möchte, hat oft mit Zertifikaten zu kämpfen. Der eine Dienst will sie an einer bestimmten Stelle, der zweite in einem ­bestimmten Format, der dritte kann gar kein TLS ohne Hilfe. Spätestens, wenn man die Zertifikate erneuern muss, bedeuted das viel Arbeit. ­Træfik übernimmt das nicht nur ­für HTTPS, sondern für jede zu verschlüsselnde TCP-Verbindung.

Von Merlin Schumacher

Wenn SieTræfik 1 für die Verwaltung von TLS-Zertifikaten und Routing einsetzen, müssen Sie spätestens, wenn ein Dienst nicht über HTTPS läuft, die Zertifikate extrahieren. Dafür gibt es zwar zuverlässige Werkzeuge, aber am Ende liegen Zertifikatsdateien an verschiedenen Stellen im System – in Verzeichnissen, Container-Volumes oder gar Datenbanken. Ist ein neues Zertifikat nötig, müssen Sie all die Daten aktualisieren und die zugehörigen Container oft neu starten. Das ist Fleißarbeit, die nicht nur nervt, sondern schnell zu Flüchtigkeitsfehlern führt. Mit Træfik 2 hat das ein Ende, denn der kann jedwede TCP-­Verbindung nach außen per TLS absichern und kümmert sich vollautomatisch um die Zertifikatsverwaltung. Für den Dienst dahinter passiert das vollkommen transparent. Obendrein kann Træfik Anfragen je nach Hostname zu unterschiedlichen Diensten routen.

Wer bereits Erfahrung mit Træfik 2 hat, wird sich in das Konzept schnell hineinfinden. Es ähnelt dem Vorgehen bei HTTP-Verbindungen sehr. Für alle, für die Træfik 2 noch Neuland ist, gibt es eine Einführung in c’t 17/2019 [1]. Darin werden Grundlagen wie die Einrichtung von Let’s Encrypt und das HTTP-Routing erklärt. In diesem Artikel dient der MQTT-Broker Mosquitto als Beispieldienst. Dieser kann zwar selbst TLS anbieten, aber eben nur, wenn man ihm die richtigen Zertifikate zur Verfügung stellt. Eleganter ist es allerdings, wenn Træfik auch diesen Dienst absichert, wenn er sich ohnehin um die Verwaltung der Let’s-Encrypt-Zertifikate kümmert. Zum Artikel stellen wir ein Repository auf GitHub bereit. Sie finden es über ct.de/yzuq. Dort sind alle hier beschriebenen Dateien enthalten.