Inhalt dieser Seite

Dateiformate für 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 Schlüssel


.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

General OpenSSL Befehle

Befehle zum Erzeugen von CSRs, Zertifikaten, privaten Schlüsseln und zum Entfernen des Passwortes aus einem privaten Schlüssel

Einen neuen privaten Schlüssel und ein CSR erzeugen

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

Ein selbst-signiertes Zertifikat erzeugen

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privatekey.key -out certificate.crt

Ein CSR für einen bestehenden privaten Schlüssel erzeugen

openssl req -out CSR.csr -key privatekey.key -new

Erzeugen eines CSR basierend auf einem vorhandenen Zertifikat

openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privatekey.key

Das Passwort aus einem privaten Schlüssel entfernen

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

Befehle zum Auslesen von Informationen

Befehle zum Prüfen der Daten von Zertifikaten, CSRs oder privaten Schlüsseln.

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

Ein CSR prüfen

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

Ein CSR auslesen

openssl req -in request.pem -noout -text

Einen privaten Schlüssel prüfen

openssl rsa -in privatekey.key -check

Ein Zertifikat prüfen

openssl x509 -in certificate.crt -text -noout

Ein 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

Den öffentlichen Schlüssel aus einer .pem Datei auslesen

openssl x509 -in cert.pem -pubkey

Daten aus einer .pe12 Datei auslesen

openssl pkcs12 -in cert.p12

Das Zertifikat aus einer .p12 Datei auslesen

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

Die Seriennummer aus einer .p12 Datei auslesen

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

Das Ablaufdatum aus einer .pkcs12 Datei auslesen

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

Den md5 Fingerprint anzeigen

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

Den SHA1 Fingerprint anzeigen

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

Informationen aus dem .p12 Keystore extrahieren

Privatem Schlüssel und Zertifikat aus einer PKCS#12-Datei (.pfx .p12) extrahieren

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

Privaten Schlüssels nur aus einer PKCS#12-Datei (.pfx .p12) extrahieren

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

Zertifikat nur aus einer PKCS#12-Datei (.pfx .p12) extrahieren

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

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

Den MDR-Hash des öffentlichen Schlüssels prüfen, um sicherzustellen, dass es zum CSR und dem Privaten Schlüssel passt.

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privatekey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5

Die SSL-Verbindung prüfen. Alle Zertifikate, auch die Zwischenzertifikate sollen angezeigt werden.

openssl s_client -connect www.example.com:443

Zertifikats-Dateien konvertieren

Benötigst du für dein Zertifikat ein anderes Format als Base64 encoded X.509, kannst du es mit einem entsprechenden Tool, wie z. B. das OpenSource-Tool OpenSSL  (Details zu OpenSSL) in das gewünschte Format konvertieren. Das Format, das dein Zertifikat haben muss, ist abhängig von dem 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 certificatename.cer -outform PEM -out certificatename.pem

.pem in .der

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

.der in .pem

openssl x509 -inform der -in certificatename.der -out certificatename.pem

.pem in .p7b

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

.p7b in .pem

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

.pfx in .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.

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

.ptb in .pfx

Für die Konvertierung von .ptb in .pfx sind 4 Schritte erforderlich:

Schritt 1

Einen Private-Key private.key und eine CSR- Datei erzeugen domainname.csr :
Im SSL Manager -> Tools -> OpenSSL CSR Generator den entsprechenden Konsolenbefehl erzeugen und in der Konsole auf dem Server ausführen.
Ist der Syntax bekann, kann der Befehl direkt auf dem Server in die Konsole eingegeben werden.

Schritt 2: Mit der CSR-Datei das Zertifikat im SSL Manager bestellen.

Schritt 3: 

Eine Textdatei mit der Endung .pem (z. b. certifikatename.pem) erstellen und in das gleiche Verzeichnis auf dem Server speichern, in dem die Dateien  private.key und domainname.csr liegen

In der Reihenfolge von oben nach unten Server-CRT, Intermediate- und  Root-Zertifikat in diese Datei einfügen.

Du findest die Daten im SSL Manager in den Zertifikats-Details (Zertifikatsverwaltung -> Zertifikat markieren -> Schaltfläche Info)

Das Server-CRT: Reiter Server-CRT
Das Intermediate-Zertifikat: Reiter CA-CRT (Typ: intermediate)
Das Root-Zertifikat: Reiter CA-CRT

Schritt 4: Die Datei muss dreimal konvertiert werden: .pem → .p7b → .cer → . pfx

1) Die .pem datei in eine .p7b-Datei  konvertieren

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

2) Die .p7b in eine .cer-Datei konvertieren

openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer

3) Die .cer-Datei in eine .pfx-Datei konvertieren

openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer

Legen Sie nun nach Aufforderung das Passwort fest. Damit ist der Vorgang abgeschlossen.

s_client Kommandos

-showcerts

Füge den Parameter -showcerts zu diesem Befehl hinzu, um alle vom 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 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 

Es wird dringend empfohlen .pfx-Dateien auf dem eigenen Rechner zu konvertieren, damit man den privaten Schlüssel dort behalten kann.



  • No labels