OpenSSL verwenden

OpenSSL ist ein sehr mächtiges und komplexes Werkzeug. Diese Seite beschreibt nur einzelne Situationen, in denen diese Software beim Beantragen und Verwenden von Zertifikaten helfen kann.

Auf Linux- und Macintosh-Rechnern sollte die OpenSSL-Software immer installiert sein. Besitzer von Windows-Rechnern können die Software von www.openssl.org herunterladen und installieren.

OpenSSL besitzt keine grafische Oberfläche, sondern wird durch Eintippen von Befehlen bedient.

Diese Anleitung beschreibt verschiedene Szenarien:

Alle OpenSSL-Befehle verstehen die Option -help und zeigen dann eine kurze Hilfe an.

Digitale ID (PKCS#12-Datei) zerlegen

Um eine PKCS#12-Datei zu zerlegen, verwenden Sie bitte den folgenden Befehl (alles in einer Zeile eintippen):

openssl pkcs12
  -in xxx.p12
  -out xxx.pem

Um nur einzelne Teile zu extrahieren und diese in einzelne Dateien abzuspeichern, können Sie zusätzliche Optionen angeben:

  • Nur der private Schlüssel:

    openssl pkcs12
      -in xxx.p12
      -nocerts
      -out xxx.key

  • Nur das eigene Zertifikat:

    openssl pkcs12
      -in xxx.p12
      -nokeys -clcerts
      -out xxx.crt

  • Nur die Zertifikate der Zwischenzertifizierungsstellen:

    openssl pkcs12
      -in xxx.p12
      -nokeys -cacerts
      -out xxx.chain

Sie werden jeweils nach dem Passwort für die digitale ID und, falls der private Schlüssel ausgegeben wird, zweimal nach einem neuen Passwort zum Verschlüsseln des privaten Schlüssels in der PEM-Datei gefragt.

Digitale ID (PKCS#12-Datei) zusammenbauen

Eine vollständige digitale ID enthält folgende Bestandteile:

  1. den privaten Schlüssel

    Dieser kann der obigen Datei xxx.key entnommen werden.

  2. das zugehörige Zertifikat mit dem öffentlichen Schlüssel

    Dieses wird von der Zertifizierungsstelle als Anlage der E-Mail verschickt und kann als xxx.crt abgespeichert werden.

  3. den Zertifikaten der Zwischenzertifizierungsstellen

    Diese finden Sie entweder über den entsprechenden Link in dieser E-Mail oder einfacher auf der Seite CA-Zertifikate in der Tabellenspalte „X.509-Kette“. Sie können die Datei „Text (ohne Wurzel)“ als xxx.chain abspeichern.

Um diese Teile zu einer PKCS#12-Datei zusammenzubauen, verwenden Sie bitte den folgenden Befehl (alles in einer Zeile eintippen):

openssl pkcs12 -export
  -inkey xxx.key
  -in xxx.crt
  -certfile xxx.chain
  -name "Neue digitale ID"
  -out xxx.p12

Anstelle von Neue digitale ID sollten Sie Name und Datum oder ähnliche Angaben machen. Viele Programme zeigen diese Bezeichnung in der Liste der digitalen IDs an.

Eine PKCS#12-Datei wird immer mit einem Passwort verschlüsselt. Daher werden Sie sowohl nach dem Passwort des privaten Schlüssels als auch zweimal nach dem neuen Passwort für die digitale ID gefragt.

Falls Sie nicht sicher sind, welche Zwischenzertifikate Sie benötigen, können Sie diese auch automatisch heraussuchen lassen. Speichern Sie dazu diese Datei als all-ca.pem ab und benutzen Sie folgenden Befehl (alles in einer Zeile eintippen):

openssl pkcs12 -export
  -inkey xxx.key
  -in xxx.crt
  -chain -CAfile all-ca.pem
  -name "Neue digitale ID"
  -out xxx.p12

Privaten Schlüssel in verschiedenen Formaten speichern

Verschiedene Software benötigt den privaten Schlüssel möglicherweise in unterschiedlichen Formaten:

Unverschlüsselte DER-Datei:

openssl rsa
  -inform pem -in xxx.key
  -outform der -out yyy.der

Unverschlüsselte PEM-Datei:

openssl rsa
  -inform pem -in xxx.key
  -outform pem -out yyy.pem

Verschlüsselte PEM-Datei:

openssl rsa
  -inform pem -in xxx.key
  -aes256
  -outform pem -out yyy.pem

Verschlüsselte PEM-Datei im PKCS#8-Format:

openssl pkcs8
  -inform pem -in xxx.key
  -topk8
  -outform pem -out yyy.pem

Zertifikate in verschiedenen Formaten speichern

Verschiedene Software benötigt das Zertifikat möglicherweise in unterschiedlichen Formaten:

Unverschlüsselte DER-Datei (kann nur ein Zertifikat enthalten, nicht mehrere):

openssl x509
  -inform pem -in xxx.crt
  -outform der -out yyy.der

Für PKCS#12-Dateien siehe oben.

Den Inhalt eines Zertifikats kann man sich so anzeigen lassen:

openssl x509
  -inform pem -in xxx.crt
  -text
  -noout

Unverschlüsselte PKCS#7-Datei (kann mehrere Zertifikate enthalten):

openssl crl2pkcs7 -nocrl -outform DER
  -certfile xxx.crt
  -out yyy.p7b

Die PEM-Datei xxx.crt darf mehrere Zertifikate enthalten und die Option -certfile xxx.crt darf mehrmals angegeben werden. Oft wird so eine ganze Zertifikatkette inklusive Wurzelzertifikat zu einer Datei zusammengefasst.

TLS-Verbindung und vom Server präsentierte Zertifikate prüfen

openssl s_client
  -connect hostname.domain:portnumber
  -servername hostname.domain
  -showcerts

Bei Verbindungen, die mit STARTTLS arbeiten, muss das entsprechende Protokoll angegeben werden, beispielsweise für einen SMTP-Server:

openssl s_client
  -connect hostname.domain:portnumber
  -servername hostname.domain
  -starttls smtp
  -showcerts

Schlüsselpaar und Zertifikatantrag erzeugen

(Diese Methode kommt bei digitalen IDs von der UCAM nicht zur Anwendung.)

openssl req -new
  -newkey rsa:4096
  -nodes
  -keyout xxx.key
  -out xxx.req
  -utf8
  -subj '/C=DE/ST=Nordrhein-Westfalen/O=Universität Münster/CN=xxx.uni-muenster.de'

Um den privaten Schlüssel Triple-DES-verschlüsselt abzuspeichern, lassen Sie bitte die Option -nodes weg.