Erstellen wir zunächst mal die eigene CA, denn ohne Sie gibt es keine Zertifikate.
Installation von openSSL
Die Installation ist wie immer ein Kinderspiel, wenn man die Repo der Distribution nutzt. Unter Debian mit apt-get install
openssl oder unter Centos mit yum install openssl
installiert man openSSL auf dem Server
Der private Schlüssel des Servers
Der private Schlüssel ist die Grundlage. Aus dem wird der öffentliche Schlüssel generiert und mit weiteren Informationen versehen, um am Ende ein CSR zu haben, welches man in der Zertifizierungsstelle einreichen kann. Die Erstellung des privaten Schlüssels für den Server ist denkbar einfach.
openssl genrsa -out $HOSTNAME-server.key 4096
Ich verwende hier den Hostnamen des Servers (s1227), um später genau zu wissen welcher priv.Key zu welchem Server gehören. Es schafft einfach Klarheit. Wichtig ist, dass der private Schlüssel unbedingt so aufbewahrt wird, dass niemand an ihn heran kommt. Entsprechender Lagerort und Zugriffsberechtigung sollte selbstverständlich sein.
Die CSR (Certificate Signing Request)
Nun erstellen wir mit Hilfe des priv. Schlüssels den öffentlichen Teil samt zusätzlicher Informationen, sodass die Zertifizierungsstelle (CA) den Schlüssel signieren kann.
openssl req -new -key s1227-server.key -out $HOSTNAME-server.csr
Nun wird man nach einigen Angaben "interviewed" . Wichtig ist hier aber nur der FQDN, wenn man selbst signieren will. In meinem Beispiel habe ich silvesterlangen.de
eingegeben.
Wollten wir nun ein Zertifikat bei einem öffentlichen Anbieter (CA) signieren lassen, so könnte man nun die CSR-Datei dazu verwenden. Da wir aber eine eigene CA wollen, müssen wir diese erst mal erstellen.
Bis hier hin muss man für alle Server diese Schritte ausführen, die ein signiertes Zertifikat erhalten sollen.
Die eigene CA erstellen
Der Priv-Key der CA
Auch die eigene CA braucht einen privaten Schlüssel. Mit diesem generieren wir gleich danach das selbstsignierte Stammzertifikat (RootCA).
openssl genrsa -aes256 -out $HOSTNAME-ca.key 4096
Das angeforderte Passwort sollte nach den üblichen Passwortrichtlinien gestaltet und mindestens 12 Zeichen lang sein. Immerhin ist es der Priv-Key der CA.
Das Stammzertifikat erstellen
Nun generieren wir uns einen temporären Zertifikatsantrag für unsere CA und machen sie durch Eigenbeglaubigung gültig.
openssl req -x509 -new -extensions v3_ca -key s1227-ca.key -days 1461 \
-out $HOSTNAME-ca.crt -sha512
Zunächst wird das Passwort der Priv-Keys erfragt bevor es dann zu den Angaben des Stammzertifikats geht.
Das Serverzertifikat signieren
Wir sind jetzt fast fertig und müssen das Zertifikat nur noch signieren. Das geschieht so:
openssl
x509 -req -in $HOSTNAME-server.csr -CA $HOSTNAME-ca.crt -CAkey
$HOSTNAME-ca.key -CAcreateserial -out $HOSTNAME-server.crt \
-days 365 -sha512
Jetzt haben wir ein Zertifikat, welches 365 Tage gültig ist.
Inhalt und Gültigkeit des Zertifikats
Um sich den Inhalt anzuschauen, weil man vielleicht prüfen möchte, kann man folgenden Befehl verwenden: openssl x509 -req -in $HOSTNAME-server.csr -CA $HOSTNAME-ca.crt \
-CAkey $HOSTNAME-ca.key -CAcreateserial -out server.crt -days 365 \
-sha512
Die Gültigkeit der Zertifikats bzw. Zertifikatskette lässt sich wie folgt prüfen:
openssl verify -CAfile $HOSTNAME-ca.crt $HOSTNAME-server.crt
Nun haben wir eine funktionstüchtige CA erstellt und können absofort auch gültige Zertifikate ausstellen.