Zertifikatsanforderung mit Openssl

Die Zertifizierungsanforderung ist, technisch gesehen, der mit dem eigenen privaten Schlüssel signierte öffentliche Schlüssel. Dadurch ist sicher gestellt, dass der Erzeuger des CSR im Besitz beider Schlüsselteile ist.

Die Zertifizierungsanforderung richtet sich an eine bestimmte Zertifizierungsstelle, und dient dazu einen bestimmten Server bzw. dessen Schlüssel zu zertifizieren. Daher muss der CSR alle für die Zertifizierungsinstanz und den Server spezifischen Parameter enthalten.

Konfigurationsdatei schreiben

default.conf

Openssl nutzt eine Konfigurationsdatei, um alle Parameter für die Zertifikatsanforderung zu setzen. Es folgen 2 Beispiele, wie diese Datei aussehen kann. Die Beispiele können auch am Ende des Dokuments heruntergeladen werden.

[ req ]
default_bits = 4096
default_keyfile = privkey
default_md = sha256
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no

dirstring_type = nobmp
[ req_distinguished_name ]
C = DE
ST = Hessen
L = Darmstadt
O = Technische Universitaet Darmstadt
1.OU = Physik
2.OU = Institut fuer Angewandte Festkernphysik
CN = beispiel.forschung.tu-darmstadt.de
[ req_attributes ]
challengePassword = mein_passwort

default_san.conf

Alternativ kann ein Zertifikat auch für mehrere Hostnamen ausgestellt werden. Dabei ist zu beachten, dass auch der Host, der im Subjekt steht, in der Liste der Alternativnamen auftaucht.

[ req ]
default_bits = 4096
default_keyfile = privkey
default_md = sha256
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no

dirstring_type = nobmp

req_extensions = v3_req
[ req_distinguished_name ]
C = DE
ST = Hessen
L = Darmstadt
O = Technische Universitaet Darmstadt
1.OU = Physik
2.OU = Institut fuer Angewandte Festkernphysik
CN = beispiel.forschung.tu-darmstadt.de
[ req_attributes ]
challengePassword = mein_passwort

[ v3_req ]
subjectAltName = @alt_names

[ alt_names]
DNS.1 = beispiel.forschung.tu-darmstadt.de
IP.1 = 130.83.1.1

Hier wird insbesondere der Distinguished Name (DN) festgelegt, der den Server eindeutig identifiziert, einerseits mit seinem Rechnernamen (Full Qualified Domain Name), andererseits mit seiner Zugehörigkeit zu einer Organisationsstruktur, der TU Darmstadt. Die IP-Adresse wird üblicherweise nicht erfasst, kann aber als zusätzliches Attribut aufgenommen werden.

Das challengePassword sollte für jeden CSR ein anderes sein. Das Zertifikat kann mit Hilfe des challenge passwords später einmal von Ihnen widerrufen werden, falls das nötig sein sollte.

Erzeugen der Request

Request und privater RSA Schlüssel können in einem Befehl generiert werden. Die Schlüssellänge muss mindestens 2048 Bit betragen, wobei 4096 mittlerweile empfehlenswert sind. Der mit dem folgenden Befehl erzeugte private RSA-Schlüssel hat eine Länge von 4096 Bit und befindet sich anschließend in der Datei private_key.pem In der Datei request.pem befindet sich die zu übermittelnde Zertifizierungsanforderung.

openssl req -newkey rsa:4096 -config default.conf -out request.pem -keyout private_key,pem

Bei der Erzeugung des Schlüssel wird nach einer pass phrase gefragt. Diese pass phrase dient dazu, den neu erzeugten Schlüssel vor unbefugtem Zugriff zu schützen. Nur derjenige, der die pass phrase kennt, kann den Schlüssel verwenden. Die pass phrase sollte daher so lang und so kompliziert wie möglich sein, d.h. 8 oder mehr Zeichen, in denen alle druckbaren Zeichen vorkommen können. Sollte die pass phrase allerdings verloren gehen oder vergessen werden, werden der Schlüssel und das Zertifikat unbrauchbar!

Anhang

DateiTypGröße
gen-csr.shSH-Datei0kB
ssl-server-conf.txtTXT-Datei0kB