Eine eigene kleine Root-CA für den localhost installieren

Datum: 2. August 2018
Autor*in: Benjamin Hofmann


Es ist eigentlich ein Wunder, dass  es immer noch keine allgemein anerkannte Lösung dafür gibt, selbsterstelle Zertifikate auf dem lokalen Webserver auf einfache Art und Weise zu installieren. Zumindest ist mir keine bekannt und ich hatte heute das große Vergnügen genau dies tun zu müssen.

Das Problem

Hintergrund ist der, dass im Zuge eines Kundenprojektes, eine Microsite erstellt werden soll, die auch offline aufrufbar ist. Und hierfür braucht es, nach aktuellen Standards, die sogenannten Service-Worker. Das sind kleine Skripte, die sich im Browser installieren und dann Hintergrundprozesse übernehmen, z.B. Push-Benachrichtigungen empfangen oder eben auch eine Art Offline-Proxy bereitzustellen. Diese brauchen jedoch nicht nur eine sichere Verbindung zum Server, sondern auch ein gültiges Zertifikat. Ansonsten erhält man unglaublich hübsch anzusehende Warnhinweise und der Service-Worker lässt sich im Chrome nicht sauber installieren. Chrome deshalb, da Firefox mit Bordmitteln keine Möglichkeit bietet diese Skripte zu kontrollieren oder zu debuggen und vom Internet Explorer will ich erst gar nicht reden.

Die Lösung

Nach einiger Verzweiflung und einigen Fehlversuchen das Ganze mittels selbstsignierter Zertifikate zu erledigen, bin ich schlussendlich auf das kleine Tool Minica gestoßen, welches sich mittel Go einfach installieren lässt. Dieses Werkzeug erstellt beim ersten Aufruf ein Root-Zertifikat, auf welchem alle daraufhin erzeugten Zertfikate basieren. Das Root-Zertfikat selbst muss man dann anschließend auf seinem Rechner installieren, die Domain-Zertifikate entsprechend im Server und dann kommt man auch schon in den Genuß grüner Schlösser in der Adressezeile des Browsers.

Installation von Go

Im folgenden will ich einmal die komplette Installation mitsamt Go auf einem Debian-basierten System durchspielen:

An sich kann man sich bequem an die Installationsanweisungen von Go selbst halten, also runterladen und entpacken. Anschließend muss man nur noch den $PATH anpassen, um zum einen den Befehl go selbst als auch die der installierten Packages nutzen zu können. In meiner ~/.bashrc stehen nun folgende zusätzliche Zeilen:

GOHOME=/usr/local/go
GOPATH=$HOME/go

PATH=$GOPATH/bin:$GOHOME/bin:$PATH

Installation/Nutzung von Minica

Anschließend kann man Minica auch schon mittels go get github.com/jsha/minica installieren und danach auch direkt mittels minica --domains=foo.bar ausführen. Hier empfiehlt es sich aber das in einem speziell dafür vorgesehenen Ordner zu tun. Auf meiner Maschine gibt es dafür den Ordner ~/workspace/apache2/ssl. Führt man also nun an dieser Stelle den Befehl aus, erhält man anschließend folgende Dateien:

~/workspace/apache2/ssl
├── foo.bar
│   ├── cert.pem
│   └── key.pem
├── minica.pem
└── minica-key.pem

Die beiden minica*-Dateien auf der obersten Ebene stellen werden später noch wichtig wenn es darum geht das Root-Zertifikat im Browser zu installieren, für den Server selbst braucht es jedoch nur die beiden Dateien im neuen Ordner foo.bar, welcher genau so lautet wie die Domain aus dem Befehl von vorhin. Diese beiden Dateien können dann im VHost eingebunden werden.

Was leider nicht funktioniert sind Wildcard-Domains wie z.B. *.bar. Diese lassen sich zwar erzeugen, aber der Browser meckert dann weiterhin, dass die aufgerufene Domain nicht zu der des Zertifikats passt. Aber dafür kann mittels Kommata ein Zertifikat für mehrere Domains erzeugen, z.B. minica --domains foo.bar,www.foo.bar. Das fürht zur gleichen Struktur wie oben gezeigt, aber das fertige Zertifikat ist eben für mehrere Domains gültig.

Root-Zertifikat im Browser installieren

Zu guter letzt schnappt man sich noch die Datei minica.pem und installiert diese in den verschiedenen Browsern.

Für den Chrome und Edge öffnet man dazu die Zertifikatsverwaltung von Windows selbst und wählt an der im Screenshot gezeigten Stelle „Importieren“. Dort wählt man dann noch den Ort der Datei aus, klickt ein paar mal weiter und das war es auch schon.

Im Firefox muss man stattdessen in die Einstellungen gehen, dort auf „Datenschtz & Sicherheit“ und kann ganz unten die Zertifikate anzeigen lassen. Im Tab „Zertifizierungsstellen“ kann man dann ebenfalls die minica.pem importieren.


Dieser Artikel wurde verschlagwortet unter:


Kommentare

Selber kommentieren:






Weitere Beiträge zum Thema Technologie


Umzug eines MediaWiki auf neuen Server? Auweh…

Autor*in:


Projekte // Technologie // Über den Tellerrand


Ein kleiner Hinweis an Entwickler und Projektmanager, sollten MediaWiki-Projekte einen Serverumzug erfahren dürfen: Das Problem Versionen vor 1.19.x kommen mit den neuen Versionen der PCRX-Library (Perl Compatible Regular Expressions) nicht zurecht. So gehabt nun bei einem alten Projekt. Das Problem äußert sich dadurch, dass plötzlich auf den Seiten unter der Überschrift keine Contents mehr auftauchen, in der …


Beitrag lesen
03
DEZ
15

OOP 2014

Autor*in:


Projekte // Technologie // Über den Tellerrand


Auf geht’s zu Tag 2 auf der OOP in München. Dieses Jahr steht die Konferenz unter dem Motto: Complexity – Managing Today’s Challenges. Und dieses Leitthema wurde gestern in zwei Keynotes von Tim Mattson (Intel Corp.) und Glenda Eoyang (Human System Dynamics Institute) bereits in seinen vielschichtigen Facetten aufgegriffen. Die Quintessenz: Komplexität (in IT-Projekten) lässt …


Beitrag lesen
05
FEB
14

CSS Selectors and Pseudo Selectors and browser support

Autor*in: Benjamin Hofmann


Technologie // User Experience & Design


Eben bin ich auf eine interessante Seite zum Thema Selektoren in CSS gestoßen, die sehr übersichtlich auflistet was geht und was nicht und vor allem in welchen Browsern dies der Fall ist. Leider ist die Seite nicht mehr ganz aktuell, aber für einen schnellen Überblick sollte sie allemal ausreichen. Und mit etwas Glück kommt auch …


Beitrag lesen
17
FEB
12

Postel’s law

Autor*in:


Technologie


Es gibt vermutlich nur wenige Sätze in der IT, die die tägliche Arbeit mit imx.MetaSearch und deren Code besser charakterisieren als dieser: Be conservative in what you do, be liberal in what you accept from others (Postel’s law).


Beitrag lesen
14
MAI
13