Erstellen eines X.509-Zertifikates mit openSSL

X506-Zertifikate dienen u.a. dazu, die Authentizität eines HTTPS-Servers zu bestätigen. Dazu werden sie üblicherweise streng hierarchisch von vertrauenswürdigen Zertifizierungsstellen ausgestellt. Manchmal kann es nützlich sein, ein solches Zertifikat aber auch selber auszustellen, sei es für Anwendungen im Intranet oder für Versuchszwecke. Dies kann man leicht mit openSSL tun.

openSSL ist ein Programm, dass von der Kommandozeile aus gestartet wird. mit

openssl version

können Sie überprüfen, ob openSSL auf ihrem Rechner installiert ist.

Um ein X.509-Zertifikat zu erstellen, benötigen Sie zunächst einen privaten RSA-Schlüssel. Diesen erzeugen Sie mit dem Kommando

openssl genrsa 2048 > privatekey.pem

Das Komando erzeugt die Datei privatekey.pen, die einen privaten RSA schlüssel mit der Länge von 2048 bits. Diesen Schlüssel müssen Sie an einer sicheren Stelle im Dateisystem speichern. Wenn unbefugte Zugriff auf diesen Schlüssel erhalten, ist damit die Sicherheit des Zertifikates nicht mehr gegeben. Wenn Sie diesen Schlüssel verlieren, können Sie das Zertifikat nicht mehr nutzen.

Im nächsten Schritt muss eine Zertifizierungsanfrage erstellt werden. Dies geschieht mit dem Kommando

openssl req -new -key privatekey.pem -out csr.pem

Openssl fragt nun eine Reihe von Informationen ab:

  • Country Name
    2-Zeichen ISO Abkürzung für das Land
  • State or Province
    Name des Budesstates/-landes oder der Provinz, indem die Organisation beheimatet ist.
  • Locality Name
    Name der Stadt, in der die Organisation beheimatet ist.
  • Organization Name
    Der volle Name der Organisation für die das Zertifikat ausgestellt wird.
  • Organizational Unit
    Optional, falls das Zertifikat zu einer Untereinheit der Organisation gehört.
  • Common Name
    Vollständiger Domain-Name der Website, die zertifiziert werden soll.
  • Email address
    Email-Adresse des Administrators.

Das Programm erstellt nun die Zertifizierungsanfrage und schreibt sie in die Datei csr.pem. Diese Datei kann jetzt an eine offzielle Zertifizierungsstelle geschickt werden. Wie oben beschrieben, kann es für bestimmte Zwecke aber auch ausreichen, das Zertifikat selbst zu erstellen. Das geht mit folgendem Kommando:

openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out server.crt

Die Zertifizierungsanfrage csr.pem wird nicht weiter benötigt und kann gelöscht werden. Die beiden Dateien privatekey.pem und public.crt müssen jedoch sicher aufbewahrt werden.

Zertifizierung mit einem eigenen Wurzel-CA-Zertifikat

Wenn es sich um einen einzelnen Test handelt, reicht das oben beschriebene Vorgehen vollkommen aus. Sollten Sie jedoch häufiger in die Verlegenheit kommen, eigene Zertifikate ausstellen zu müssen, z.B. für mehrere Server im Intranet, kann es sinnvoll sein, kann es sinnvoll sein, ein eigenes Wurzelzertifikat zu erstellen. Dieses Wurzelzertifikat können Sie dann ihrem Browser hinzufügen. Damit werden Sie selbst zur vertrauenswürdigen Zertifizierungsstelle (CA), d.h. ihr Browser vertraut allen Zertifikaten, die von diesem (Ihrem) Wurzelzertifikat abgeleitet sind.

Zunächst müssen Sie wieder einen eigenen privaten Schlüssel für das CA-Zertifikat mit

openssl genrsa 2048 > rootCAkey.pem

Auch dieser Schlüssel muss nun an einer sicheren Stelle im Dateisystem abgespeichert werden. Das CA-Zertifikat wird jetzt mit

openssl req -x509 -days 356 -key rootCAkey.pem -out rootCA.crt

erstellt. Auch hier werden wieder die oben genannten Informationen abgefragt. Das Zertifikat wird in der Daten rootCA.crt abgespeichert. Dieses Zertifikat können Sie jetzt in Ihrem Browser oder sogar auf der Betriebssystemebene ihres Rechners importieren. Damit sind automatisch alle von diesem Wurzelzertifikat abgeleiteten Zertifikate vertrauenswürdig.

Um jetzt ein Zertifikat für einen bestimmten Server mit diesem Wurzelzertifikat zu signieren, müssen Sie zunächst wieder wie oben beschrieben einen privaten Schlüssel für diesen Server und dann eine Zertifizierungsanfrage erzeugen.

openssl genrsa 2048 > privatekey.pem
openssl req -new -key privatekey.pem -out csr.pem

Den Kommandos kann man entnehmen, dass die Zertifizierungsanfrage mit dem privaten Schlüssel des Servers signiert ist. Nun erzeugt man das X.509-Zertifikat. Dazu wird jetzt das Wurzelzertifikat und der private Schlüssel der CA benutzt:

openssl x509 -req -in csr.pem -CA rootCA.crt -CAkey rootCAkey.pem \
  -CAcreateserial -out server.crt \
  -days 365 -sha256

Die Zertifikatdatei server.crt kann nun zusammen mit dem privaten Schlüssel privatekey.pem auf dem Server installiert werden.

0 0 votes
Article Rating
Subscribe
Benachrichtige mich zu:
0 Comments
Inline Feedbacks
View all comments