Lokale Zertifizierungsstelle (certificate authority – CA) erstellen

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 einerseits zum Erstellen eines privaten Schlüssels, der für das Signieren der Serverzertifikate verwendet wird, und zum Erstellen des Stamm-Zertifikats welches uns die Gültigkeit unser selbst zertifizierten 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 Serverzertifikate 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 Serverzertifikats mittels 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 und schützen es vor fremden Zugriffen.

root@rpitest:~# mkdir CA
root@rpitest:~# chmod 700 CA/
root@rpitest:~# cd CA

Nun erstellen wir den privaten Schlüssels und schützen Ihn mit einem möglichst sicheren Passwort:

root@rpitest:~/CA# openssl genrsa -des3 -out ca-testfirma.key 4096
Generating RSA private key, 4096 bit long modulus
.....++
.........................................................................................................................++
e is 65537 (0x010001)
Enter pass phrase for test.key:
Verifying - Enter pass phrase for test.key:

Den Schlüssel schützen wir vor fremden Zugriffen:

root@rpitest:~/CA# chmod 700 ca-testfirma.key

Erstellen des Stamm-Zertifikats

Als nächstes wird das Stamm-Zertifikat erstellt.
Da Dieses die Gültigkeit aller Serverzertifikate bestätigt wählen wir 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. Bis auf das Pflichtfeld „Country Code“ könnten alle Felder leer gelassen werden, auf Grund der Überprüfbarkeit des Zertifikats empfehle ich jedoch sie auszufüllen:

– 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

root@rpitest:~/CA# openssl req -new -x509 -days 7300 -key ca-testfirma.key -out ca-testfirma.pem
Enter pass phrase for test.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AT
State or Province Name (full name) [Some-State]:Vienna
Locality Name (eg, city) []:Vienna
Organization Name (eg, company) [1]:TestFirma
Organizational Unit Name (eg, section) []:Administration
Common Name (e.g. server FQDN or YOUR name) []:TestFirma Root CA
Email Address []:

Der „Common Name“ ist der Name des Zertifikats welcher später auch im Zertifikatsspeicher angezeigt wird.

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.