SSL für lokale Dev Umgebung mit Docker

Um die Produktions Bedingungen lokal so gut wie möglich lokal abzubilden nutze ich gerne ein Docker Setup. Ein SSL Zertifikat für die lokale Umgebung erstellen, dem die Browser vertrauen, erschien daher sinnvoll.

Nach meinen Erfahrungen macht ein nicht vertrauenswürdiges SSL Zertifikat gerne Ärger beim Debuggen oder beim arbeiten mit einem lokalen gitlab Docker.

Nach einigen Recherchen bin ich auf mkcert gestoßen. Dieses läßt sich auf dem Mac einfach über brew installieren.

brew install mkcert
# für Firefox noch nötig
brew install nss

mkcert install

Das Zertifikat wird mit

mkcert "*.l.test" docker.vm localhost 127.0.0.1 ::1

erstellt. *.l.test ist für lokale Projektadresssen die in /etc/hosts hinterlegt sein müssen. Das l in der Url steht für local und ist nötig da die meisten Browser Wildcard Zertifikate nur für die tld nicht akzeptieren. docker.vm ist enthalten da ich meist das php Docker Image von webdevops verwende. Ich denke der Rest ist klar ;-)

Es werden zwei Dateien nach diesem Schema erstellt:
_wildcard.example.org+4-key.pem
_wildcard.example.org+4.pem

Da ich für das Dockerimage zwei spezielle Dateien benötige hatte ich verschiedene Methoden getestet um die Zertifikate für mich nutzbar zu machen. Am Ende hat sich herausgestellt das simples umbenennenen ausreicht. Die *-key.pem habe ich in server.key und die andere in server.crt umbenannt. Diese beiden Dateien habe ich in meinem Docker Setup unter conf/*/ssl abgelegt. In der docker-compose.yml muss diese Zeile auskommentiert sein:
- ./conf/${PROVISION_CONTEXT}/ssl:/opt/docker/etc/httpd/ssl/

Nach einem 'make rebuild' sollte ein hübsches grünes Schloss zu sehen sein und es ein paar Probleme weniger geben. Die beiden server.* Dateien können in allen Dockern auf dem selben Rechner verwendet werden. Auf einem anderen Rechner müssen sie neu erstellt werden.

So sieht es doch gleich viel freundlicher aus ;-)

Artikel Suchen