Lesedauer 2 Minuten

Hat man seinen HTTP-Dienst endlich erfolgreich als Docker Container laufen, ist der nächste Schritt die unsichere HTTP-Verbindung mit einem SSL-Zertifikat und HTTPS  nachzurüsten. Das geht kompliziert über Anpassungen am Docker Image, oder extrem einfach mit Stunnel.

Was ist Stunnel?

Stunnel ist eine Proxy-Lösung, die SSL/TLS-Verschlüsselung zu bestehenden Clients und Servern hinzufügt, ohne dass Änderungen an den Programmcode erforderlich sind.

Die Architektur von Stunnel basiert auf OpenSSL und  ist optimiert für Sicherheit, Portabilität sowie Skalierbarkeit (einschließlich Lastenausgleich), was diese Lösung skalierbar macht.

Stunnel ist auf allen gängigen Plattformen verfügbar und arbeitet unabhängig vom verwendeten Protokoll. So lassen sich neben HTTP auch FTP, POP3, SMTP etc. absichern.

Docker Container mit SSL

Im folgenden Szenario lauft in unserem Docker-Container ein HTTP-Dienst auf Port 8080. Um diesen mit Stunnel abzusichern benötigen wir

Nach der Installation von Stunnel legen wir folgende Konfiguration in der Datei stunnel.conf ab:

Die Stunnel-Konfiguration erklärt:

  • Die 1. Zeile ist der Name des Config-Section, hier https-docker. Dieser Name ist frei wählbar.
  • accept: Der Port, auf dem Stunnel die verschlüsselte Verbindung erwartet, hier 8081.
  • connect: Der Port über den sich Stunnel mit dem Dienst im Container verbindet, hier 8080.
  • cert: Der Pfad zum SSL-Zertifikat. Solltest Du Stunnel nicht aus dem Ordner starten, in dem das Zertifikat liegt, muss hier der absolute Pfad ergänzt werden.
  • verifyChain: Steht dieser Parameter auf “no”, erlaubt Stunnel selbst signierte SSL-Zertifikate.

Das ist auch schon alles. Wir starten Stunnel mit

Dann rufen unseren Docker-Dienst über Port 8081 über eine gesicherte SSL-Verbindung im Browser auf:

Port 8080 sollte auf dem Host unseres Docker-Containers in dessen Firewall blockiert werden.  Port 8081 hingegen wird freigegeben. So ist sichergestellt, daß nach außen nur SSL-Verbindungen genutzt werden:

Docker-Container mit HTTPS hinter Firewall

 

Mehr zum Thema Docker lesen.

 

Hat Dir der Beitrag gefallen?

Wenn Du Fragen oder Anmerkungen zu diesem Beitrag hast, dann starte einen Kommentar. DANKE für Dein Feedback!