QuickTipp: OpenSSL – Erstellen von Zertifikaten aus bestehenden Zertifikaten

Im Zusammenhang mit dem Heartbleed Bug in OpenSSL müssen die Privaten Schlüssel und Zertifikate der Server ausgetauscht werden, da es durch eine geschickte Nutzung des Bugs möglich ist den Privaten Schlüssel auszulesen und zur Entschlüsselung der per https
übertragenen Daten genutzt werden.

Erster Schritt ist das Erzeugen eines neuen Privaten Schlüssels.

user@linux ~ $ openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
......................................................+++
.................................................................+++
e is 65537 (0x10001)

Der so erstellte Private Schlüssel ist neu und damit unabhängig von dem bisher genutzten Privaten Schlüssel. Damit der Schlüssel genutzt werden kann wird nun das Zertifikat benötigt. Wir gehen davon aus, dass das Zertifikat von einem Trustcenter stammt und müssen daher eine Zertifikatanfrage (CSR) erstellen.

Normalerweise würden wir dafür openssl req benutzen und alle Daten per Hand angeben. Ein sehr viel einfacherer Weg ist das bestehende Zertifikat zu benutzen und die Daten daraus zu kopieren.

user@linux ~ $ openssl x509 -x509toreq -in server_old.crt -out server.csr -signkey server.key
Getting request Private Key
Generating certificate request

Die hierbei genutzte Datei server_old.crt enthält das bisherige Zertifikat. Die Informationen aus diesem Zertifikat sind die Grundlage für die Zertifikatanfrage (server.csr).

user@linux ~ $ openssl req -in server.csr -text
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: CN=linux-essentials.de
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
[...]

Die Zertifikatsanfrage kann nun vom Trust-Center signiert und das Zertifikat erstellt werden.

Leider werden bei dieser Art der Datenübernahme nicht alle Attribute übernommen. Vor der Weitergabe daher prüfen ob alles Benötigte vorhanden ist.