Wenn wir TLS verschlüsselte Webseiten ausschließlich in einer lokalen Netzwerkumgebung betreiben wollen, können wir mit Hilfe einer lokalen Zertifizierungsstelle eigene Zertifikate erstellen, die von Browsern ohne Zertifikats-Fehlermelungen akzeptiert werden.
Die Zertifizierungsstelle dient zum Erstellen des Stamm-Zertifikats welches die Gültigkeit der untergeordneten, selbst erstellten Serverzertifikate bestätigt.
Das Root-Zertifikat der Zertifizierungsstelle wird im Zertifikatsspeicher unter „Vertrauenswürdige Stammzertifizierungsstellen“ gespeichert.
Alle mit dem privaten Schlüssel dieses Stamm-Zertifikats signierten Zertifikate werden dann von den Browsern als vertrauenswürdig angesehen.
In diesem Beitrag geht es ausschließlich um das Erstellen der lokalen Zertifizierungsstelle, des privaten Schlüssels und des Stamm-Zertifikats.
Das Signieren eines Zertifikats, für einen Webserver, mit Hilfe dieser Zertifizierungsstelle wird hier beschrieben.
Erstellen eines privaten Schlüssels
Wir erstellen uns als erstes ein Verzeichnis wo wir den privaten Schlüssel und das Zertifikat ablegen können:
mkdir CA
Wir vergeben die Berechtigungen um das Verzeichnis zu schützen:
chmod 700 CA/
Wir wechseln in das Verzeichnis:
cd CA
Nun erstellen wir den privaten Schlüssels und schützen Ihn mit einem möglichst sicheren Passwort:
openssl genrsa -des3 -out ca-testfirma.key 4096
Den Schlüssel schützen wir vor fremden Zugriffen:
chmod 700 ca-testfirma.key
Den privaten Schlüssel benötigen wir zum Signieren von selbst erstellten Zertifikaten. Es wird daher dringend empfohlen ein externes Backup (z.B. auf USB-Stick) des privaten Schlüssels aufzubewahren.
Erstellen des Stamm-Zertifikats
Als nächstes wird das Stamm-Zertifikat (Root Certificate) erstellt, dass die Gültigkeit aller untergeordneten Serverzertifikate über einen langen Zeitraum bestätigen soll.
Wir wählen daher ein Ablaufdatum weit in der Zukunft, in unserem Fall 7300 Tage also 20 Jahre.
Wir benötigen zum Erstellen des Zertifikats das Passwort des privaten Schlüssels und folgende Informationen für das Zertifikat:
– County Code – Ländercode nach ISO-3166-1 ALPHA-2
– State or Province Name – Bundesland
– Locality Name – Ortsnamen
– Organization Name – Firmenname / Organisationsbezeichnung
– Organizational Unit Name – Abteilungsname
– Common Name – Zertifikatsname
– Email Address
Der Zertifikatsname (Common Name) ist der Name des Zertifikats welcher später auch im Zertifikatsspeicher angezeigt wird.
Bis auf das Pflichtfeld „Country Code“ könnten alle Felder leer gelassen werden, auf Grund der Überprüfbarkeit des Zertifikats wird jedoch dringend empfohlen sie auszufüllen.
openssl req -new -x509 -days 7300 -key ca-testfirma.key -out ca-testfirma.pem
Das Stamm-Zertifikat bestätigt die Gültigkeit aller selbst erstellten Zertifikate. Es wird daher dringend empfohlen ein externes Backup (z.B. auf USB-Stick) des Stamm-Zertifikates aufzubewahren.
Installieren des Stamm-Zertifikats in den Zertifikatspeicher
Der Mozilla Firefox besitzt einen eigenen Zertifikatsspeicher. Sie müssen das Stamm-Zertifikat unter Einstellungen – Datenschutz & Sicherheit – Zertifikate anzeigen… – Zertifizierungsstellen importieren.
Das Stamm-Zertifikat ca-testfirma.pem wird nun auf einen lokalen PC kopiert und geöffnet.
Wir wählen den Reiter Details aus und kontrollieren die Einträge von Aussteller und die Gültigkeit.
Wenn alle Einträge richtig sind wechseln wir wieder auf Allgemein und klicken auf Zertifikat installieren…
klicken auf Weiter >, wählen Alle Zertifikate in folgendem Speicher speichern
und klicken auf Durchsuchen….
Hier wählen wir Vertrauenswürdige Stammzertifizierungsstelle und bestätigen mit OK
klicken auf Weiter >
dann auf Fertig stellen
und bestätigen die Sicherheitswarnung mit Ja.
Die Information über den erfolgreichen Zertifikatsimport schließen wir mit OK.
Das Zertifikat finden wir nun im Zertifikatsspeicher unter Internetoptionen – Inhalte
Wir klicken auf Zertifikate, dann auf Vertrauenswürdige Stammzertifizierungsstellen und scrollen bis zu unserem Stamm-Zertifikat.