Inhalt dieser Seite

Dateiformate für TLS/SSL-Zertifikate

EndungInhaltFormat  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


.sstMicrosoft proprietäres Speicherformat für Zertifikate

Allgemeine OpenSSL Befehle

Privaten Schlüssel 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 / 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 -figerprint -noout -sha1 -in test.pem

Informationen aus dem .p12 Keystore extrahieren

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

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

Passen privater Schlüssel, CSR und das Zertifikat zusammen?

Den MDR-Hash des Public Keys prüfen, um sicherzustellen, dass es zum CSR und dem Private Key passt.

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. Erweiterungen 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 nicht die Anweisungen "BEGIN CERTIFICATE/END CERTIFICATE". DER formatierte Zertifikate verwenden am häufigsten die Erweiterung .der.

.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 PEM Format in den Zertifikat Details unter CRT zur Verfügung. Das Intermediate wird unter CA CRT angezeigt. Kopieren Sie CRT und CA CRT (Intermediate) in einen Texteditor und speichern Sie die Datei als z.B. "Cert.pem".

.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, zu und von .pfx-Dateien auf dem eigenen Rechner zu konvertieren, damit man den privaten Schlüssel dort behalten kann.

.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 Schlüssel, 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. 

Kopieren Sie die Daten unter CRT in einen Texteditor und speichern Sie die Datei als z.B. "cert.pem". Wiederholen Sie den Vorgang mit dem CA CRT (Intermediate) und sichern Sie diese als z.B. “intermediate.pem”.

Legen Sie im selben Verzeichnis eine Datei mit dem privaten Schlüssel an und sichern Sie diese als z.B. "key.pem".

Öffnen Sie Ihr Terminal und führen Sie den OpenSSL-Befehl in dem Ordner aus, in welchem die Dateien vorhanden sind.

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


s_client Kommandos

-showcerts

Füge den Parameter -showcerts zu diesem Befehl hinzu, um alle vom TLS/SSL-Dienst vorgelegten Zertifikate in der Zertifikatskette zu drucken. Dies kann bei der Fehlerbehebung fehlender zwischengeschalteter Zertifizierungsstellen-Zertifikatsprobleme helfen.

openssl s_client -connect <hostname>:<port> -showcerts

-ssl2

Füge diesen Parameter hinzu, um OpenSSL zu zwingen, nur SSLv2 zu verwenden. Diese Option ist nützlich, um unterstützte SSL-Protokollversionen zu testen. Beispielsweise kannst du diesen Befehl verwenden, um zu testen, ob SSLv2 aktiviert ist oder nicht.

openssl s_client -connect <hostname>:<port> -ssl2

-ssl3,-tls1,-dtls1

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 kannst du eine bestimmte Verschlüsselung erzwingen. Diese Option ist nützlich, um aktivierte TLS/SSL-Verschlüsselungen zu testen. Beispielsweise kannst du nach der Deaktivierung schwacher Verschlüsselungen die Verbindung mit einer deaktivierten Verschlüsselung testen, um sicherzustellen, dass sie erfolgreich deaktiviert wurde.
Du kannst den Befehl openssl ciphers verwenden, um eine Liste der für OpenSSL verfügbaren Verschlüsselungen anzuzeigen.
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 
  • No labels