SSL/X.509-Zertifikate generieren

Prinzipiell geht es hier nicht um das Einrichten einer selbsterstellten Pseudo-CA, sondern nur um das Generieren eines Zertifikats bzw. genauer um das Generieren eines certificate signing requests.

Mittels

/usr/share/ssl/misc/CA -newreq (Fedora < 8)
bzw. /etc/pki/tls/misc/CA -newreq (ab Fedora 8)

wird ein neuer geheimer Key und ein signing request erstellt. Standardmäßig ist beides zusammen in der Datei newreq.pem. Daraus kopiert man den signing request in eine neue Datei. Diese wird dann an eine CA zur Signierung übergeben (z.B. CAcert oder für allgemein anerkannte Zertifikate auch PSW). Den Key kopiere ich auch immer in eine eigene Datei. Aus Sicherheitsgründen sollte man diese Datei natürlich nur für root lesbar machen ("chown root.root <datei>", "chmod 0400 <datei>}").

Wenn man diesen Schlüssel jetzt aber auf einem Server installiert, hat man das Problem, dass bei jedem Start das Passwort eingegeben werden muss. Ist natürlich etwas sicherer, aber letztlich für einen Internetserver unpraktikabel. Daher kann man das Passwort mittels

/usr/bin/openssl rsa -in server.bak -out server.key

deaktivieren.

Alternativ zur obigen Vorgehensweise kann man auch zuerst mit folgendem Befehl nur den geheimen Schlüssel generieren:

/usr/bin/openssl genrsa 2048 > server.key

und dann anschließend die CSR-Datei wie unten dargestellt berechnen lassen.

CSR erneut erzeugen

Die CSR-Datei kann man jederzeit aus dem privaten Schlüssel neu erstellen, z.B. wenn ein Zertifikat verlängert werden soll und man die ursprüngliche CSR-Datei nicht mehr hat.

Update Dezember 2014: -sha1 führt bei einigen CAs dazu, dass sie ein mit SHA1 signiertes Zertifikat ausstellen. Solche Zertifikate werden veraussichtlich ab 2016 von den Browsern nur noch eingeschränkt als "sicher" angesehen. Daher empfiehlt sich die Verwendung eines moderneren Hashing-Verfahrens (z.B. mittels -sha256.
openssl req -new -sha1 -key server.key -out server.csr

Allerdings ist es durchaus zu empfehlen, den private Key auch mal neu zu generieren, wenn eh ein neues Zertifikat ausgestellt werden muss.