---
title: "OpenSSL - Die wichtigsten Befehle"
url: "https://help.internetx.com/de/tls-ssl-smime/openssl-wichtige-befehle/"
lang: "de"
section: "TLS/SSL & S/MIME"
---

# OpenSSL - Die wichtigsten Befehle

## Dateiformate für TLS/SSL-Zertifikate

Wenn das Zertifikat in einem anderen Format als Base64-kodiertem X.509 benötigt wird, kann es mit einem entsprechenden Tool umgewandelt werden, z. B. mit dem Open-Source-Tool OpenSSL (Details zu OpenSSL). Das erforderliche Format hängt von dem Server ab, auf dem das Zertifikat installiert werden soll.

Das PEM-Format ist das am häufigsten verwendete Format für Zertifikate. Erweiterungen für PEM-Zertifikate sind .cer, .crt und .pem. Dabei handelt es sich um Base64-kodierte ASCII-Dateien. Das DER-Format ist die binäre Form des Zertifikats. DER-formatierte Zertifikate enthalten nicht die Anweisungen "BEGIN CERTIFICATE/END CERTIFICATE". DER-formatierte Zertifikate verwenden meist die Erweiterung .der.

| Endung | Inhalt | Format  Encoding |
| --- | --- | --- |
| .pem | Zertifikate oder Private Keys. Mehrere Abschnitte können in einer Datei zusammengefasst sein. | DER oder Base64 |
| .req | RFC2986 PKCS #10: Certification Request Syntax Specification Version 1.7 | DER oder Base64 |
| .cer | Enthält das Zertifikat bestehend aus den Daten (Name, Gültigkeitsdauer, Ausstellende CA, Fingerprint etc.) | X509 DER oder Base64 |
| .crt | Binäres Zertifikat | X.509  binary |
| .pfx, .p12 | Mit Kennwort geschützter PKCS#12 Container enthält Zertifikate und Private Keys |  |
| .pzb, .p7c | PKCS#7 Kann die Zertifikate, Revocation Liste (CRL) etc. enthalten. RFC 2315 PKCS 7: Cryptographic Message Syntax Version 1.5 |  |
| .crl | Enthält die Liste der zurückgezogenen Zertifikate RFC3280 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile |  |
| .sst | Microsoft proprietäres Speicherformat für Zertifikate |  |

## OpenSSL-Befehle

### Allgemeine OpenSSL Befehle

#### Private Key und CSR generieren

openssl req -new -nodes -keyout key.pem -out csr.pem -newkey rsa:2048

#### CSR für einen bestehenden Private Key erzeugen

openssl req -out csr.pem -key key.pem -new

#### CSR für vorhandenes Zertifikat generieren

openssl x509 -x509toreq -in cert.pem -out csr.pem -signkey key.pem

#### Das Passwort aus einem Private Key entfernen

openssl rsa -in privateKey.pem -out newprivatekey.pem

### Befehle zum Auslesen und Prüfen von Informationen

Ist das Zertifikat passwortgeschützt, kann dieser Parameter verwendet werden:  -passin pass: "myPass"

#### CSR syntaktisch prüfen

openssl req -text -noout -verify -in csr.csr

#### CSR auslesen

openssl req -in csr.pem -noout -text

#### Private Key prüfen

openssl rsa -in key.pem -check

#### Zertifikat anzeigen

openssl x509 -in certificate.crt -text -noout

#### PKCS#12 Datei prüfen (.pfx or .p12)

openssl pkcs12 -info -in keyStore.p12

#### Daten aus einer .pem Datei auslesen

openssl x509 -noout -text -in cert.pem

#### Öffentlichen Schlüssel aus einer .pem Datei auslesen

openssl x509 -in cert.pem -pubkey

#### Daten aus einer .p12 Datei auslesen

openssl pkcs12 -info -in cert.p12

#### Zertifikat aus einer .p12 Datei auslesen

openssl pkcs12 -in keystore.p12 -clcerts | openssl x509 -text

#### Seriennummer aus einer .p12 Datei auslesen

openssl pkcs12 -in keystore.p12 -clcerts | openssl x509 -serial -noout

#### Ablaufdatum aus einer .pkcs12 Datei auslesen

openssl pkcs12 -in cert.p12 -nodes | openssl x509 -noout -enddate

#### md5 Fingerprint anzeigen

openssl x509 -fingerprint -noout -md5 -in test.pem

#### SHA1 Fingerprint anzeigen

openssl x509 -fingerprint -noout -sha1 -in test.pem

#### Private Key und Zertifikat aus einer PKCS#12-Datei (.pfx .p12) extrahieren

openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

### Abgleich von Private Key, CSR und Zertifikat

#### MD5-Hash von Public Key, CSR und Private Key abgleichen

openssl x509 -noout -modulus -in cert.crt | openssl md5

openssl rsa -noout -modulus -in key.pem | openssl md5

openssl req -noout -modulus -in CSR.csr | openssl md5

#### Die TLS/SSL-Verbindung prüfen. 

Alle Zertifikate, auch die Zwischenzertifikate sollen angezeigt werden.

openssl s\_client -connect www.example.com:443

## Zertifikats-Dateien konvertieren

Sofern das Zertifikat in einem alternativen Format benötigt wird, kann dieses mit z.B. dem OpenSource-Tool OpenSSL (Details zu OpenSSL) konvertiert werden. Das benötigte Format, ist abhängig vom Server, auf dem es installiert werden soll.

**Dateiendungen**  
Das PEM-Format ist das am häufigsten verwendete Format für Zertifikate. Dateiendungen für PEM-Zertifikate sind .cer, .crt und .pem. Es handelt sich um Base64-kodierte ASCII-Dateien. Das DER-Format ist die Binärform des Zertifikats. DER-formatierte Zertifikate enthalten keinen BEGIN CERTIFICATE/END CERTIFICATE-Header und -Footer. DER-formatierte Zertifikate verwenden am häufigsten die Dateiendung .der.

### Beispiele für Format-Konvertierungen

#### .cer in .pem

openssl x509 -in cert.cer -outform PEM -out cert.pem

#### .pem in .der

openssl x509 -outform der -in cert.pem -out cert.der

#### .pem in .p7b

openssl crl2pkcs7 -nocrl -certfile cert.pem -out cert.p7b -certfile intermediate.cer

Zum Erzeugen einer .p7b Datei wird das Zertifikat (CRT) und das Intermediate (CA CRT) benötigt. Das Zertifikat steht im Format in den Zertifikat-Details unter CRT zur Verfügung. Das Intermediate wird unter CA CRT angezeigt. CRT und CA CRT (Intermediate) in einen Texteditor kopieren und die Datei als z. B. „Cert.pem“ speichern.

#### .p7b in .pem

openssl pkcs7 -print\_certs -in cert.p7b -out cert.pem

#### .pfx in .pem

openssl pkcs12 -in cert.pfx -out cert.pem

Es wird dringend empfohlen, die Konvertierung in und von .pfx-Dateien auf dem eigenen Rechner durchzuführen. So kann der Private Key dort beibehalten werden.

#### .pem in .pfx / .p12

openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem -certfile intermediate.pem

Zum Erzeugen einer PFX/PKCS#12 Datei wird der Private Key, das Zertifikat (CRT) und das Intermediate (CA CRT) benötigt. Das Zertifikat steht im PEM Format in den Zertifikat-Details unter CRT zur Verfügung. Das Intermediate wird unter CA CRT angezeigt.

Schritt für Schritt:

-   Die Daten unter CRT in einen Texteditor kopieren und die Datei als z. B. „cert.pem“ speichern.
-   Den Vorgang mit dem CA CRT (Intermediate) wiederholen und als z. B. "intermediate.pem" speichern.
-   Im selben Verzeichnis eine Datei mit dem Private Key anlegen und als z. B. „key.pem“ speichern.
-   Das Terminal öffnen und den OpenSSL-Befehl in dem Ordner ausführen, in dem die Dateien gespeichert sind.

Da .pfx / .p12 den Private Key enthält, muss ein Passwort für die Konvertierung angegeben werden. Dieses wird erneut benötigt, wenn z.B. der Private Key aus der PFX Datei extrahiert werden soll.

## s\_client Kommandos

### \-showcerts

Den Parameter -showcerts diesem Befehl hinzufügen, um alle vom TLS/SSL-Dienst vorgelegten Zertifikate in der Zertifikatskette anzuzeigen. Dies kann bei der Fehlerbehebung fehlender zwischengeschalteter Zertifizierungsstellen-Zertifikatsprobleme helfen.

openssl s\_client -connect <hostname>:<port> -showcerts

#### \-ssl2

Dieser Parameter zwingt OpenSSL, nur SSLv2 zu verwenden. Diese Option ist nützlich, um unterstützte SSL-Protokollversionen zu testen. Damit lässt sich testen, ob SSLv2 aktiviert ist oder nicht.

openssl s\_client -connect <hostname>:<port> -ssl2

#### \-ssl3,-tls1,-dtls1

Ähnlich wie der Schalter -ssl2 erzwingen -ssl3, -tls1 und -dtls1 die Verwendung von SSLv3, TLSv1 bzw. DTLSv1.

openssl s\_client -connect <hostname>:<port> -ssl3 openssl s\_client -connect <hostname>:<port> -tls1 openssl s\_client -connect <hostname>:<port> -dtls1

#### **\-**cipher 

Mit diesem Parameter lässt sich eine bestimmte Verschlüsselung erzwingen. Diese Option ist nützlich, um aktivierte TLS/SSL-Verschlüsselungen zu testen. So lässt sich nach der Deaktivierung schwacher Verschlüsselungen die Verbindung mit einer deaktivierten Verschlüsselung testen.

Der Befehl openssl ciphers listet alle für OpenSSL verfügbaren Verschlüsselungen auf.

Die Verwendung einer vom Server nicht unterstützten Verschlüsselung führt zu einem Fehler ähnlich dem folgenden.

openssl s\_client -connect <hostname>:<port> -cipher DHE-RSA-AES256-SHA openssl s\_client -connect example.com:443 -cipher EXP-RC4-MD5 CONNECTED(00000003) 42792:error:14077410:SSL routines:SSL23\_GET\_SERVER\_HELLO:sslv3 alert handshake failure:/SourceCache/OpenSSL098/OpenSSL098-47.1/src/ssl/s23\_clnt.c:602
