openssl

Erzeugen von Schlüsseln

Erzeugen des geheimen Schlüssels

Als Erstes erzeugen wir den privaten Schlüssel nach dem RSA-Verfahren. Die Schlüssellänge muss nach der Richtlinie der „Global CA“ mindestens 2048 Bit betragen.

Die Option -aes256 bewirkt, daß bei der Erzeugung des Schlüssels nach einer pass phrase gefragt wird. 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! Der mit dem folgenden Befehl erzeugte private RSA-Schlüssel hat eine Länge von 2048 Bit und befindet sich anschließend in der Datei privkey.

openssl genrsa -aes256 -out privkey 2048

Erzeugen des öffentlichen Schlüssels

Für die Zertifizierung ist dieser Schritt gar nicht notwendig, da die Zertifizierungsanforderung im folgenden Schritt direkt aus dem privaten Schlüssel erzeugt wird. Der öffentliche Schlüssel wird aus den Daten errechnet, die im privaten Schlüssel abgespeichert sind. Dementsprechend gibt es hier außer den Dateinamen keine Optionen.

openssl rsa -pubout -in privkey -out pubkey

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 bekanntlich 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.

Bei OpenSSL wird dies mit Hilfe einer Konfigurationsdatei gelöst, die wie folgt aussehen kann:

[ req ]
default_bits = 2048
default_keyfile = privkey
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
emailAddress = administrator@forschung.tu-darmstadt.de

[ req_attributes ]
challengePassword = mein_passwort

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 erfaßt, 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.

Falls Sie die Konfiguration in der Datei server.cnf abgelegt (und entsprechend angepasst) haben, können Sie den CSR direkt mit folgendem Befehl erzeugen:

openssl req -new -config server.cnf -key privkey -out mein.csr

Den soeben erzeugten CSR können Sie auch in lesbarer Form zur Überprüfung darstellen:

openssl req -text -in mein.csr

Die so erzeugte Datei mein.csr, die man sinnvollerweise nach der jeweiligen Maschine benennt, können Sie vorab an die TUD CA G01 ( tud-ca <at> hrz.tu-darmstadt.de) schicken, damit Ungereimtheiten oder Fehler im Vorhinein ausgeräumt werden können und nicht erst bei dem eigentlichen Zertifizierungsvorgang entdeckt werden.

Anhang

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