SSL Zertifikate mit openSSL konvertieren

Problem

Sie möchten ein Zertifikat konvertieren. Am einfachsten geht das mit openSSL. 

Lösung

Gleich voran, OpenSSL können Sie hier herunterladen:

Download
A
nonsten gibt es auch online Konverter wie sslshopper.com

Grundlegendes zu den Zertifikatsformaten


Base64/PEM/CER/KEY/CRT Format

Ist das am häufigsten verwendete Format, in dem Zertifizierungsstellen Zertifikate ausstellen. Es enthält Text wie „—BEGIN CERTIFICATE—–“ und „—END CERTIFICATE—–“.
In einer Datei können mehrere PEM-Zertifikate und auch der private Schlüssel untereinander enthalten sein. Die meisten Plattformen (z. B.: - Apache) erwarten jedoch, dass sich die Zertifikate und der private Schlüssel in separaten Dateien befinden. Diese Dateien heißen meist id_rsa (ohne Dateiendung für den privaten Schlüssel) und id_rsa.pub (für den öffentlichen Teil).

  • Es handelt sich um Base64-codierte ACII-Dateien
  • Sie haben Erweiterungen wie .pem, .crt, .cer, .key
  • Das von Linux/Apache und ähnliche Server verwende PEM-Format ist das gleiche wie ein Base-64 Zertifikat mit der Endung .crt .cer unter Windows. Nur die Dateiendung ist anders.
DER Format

Es ist eine binäre Form des ASCII-PEM-Formatzertifikats. Alle Arten von Zertifikaten und privaten Schlüsseln können im DER-Format codiert werden

  • Sind Dateien im Binärformat
  • Haben die Erweiterungen .cer & .der
  • Wird normalerweise in Java-Plattformen verwendet
P7B / PKCS # 7

Ethalten die Anweisungen „—–BEGIN PKCS—–“ und „—END PKCS7—–“. Es kann nur Zertifikate und Kettenzertifikate enthalten, nicht jedoch den privaten Schlüssel.

  • Sind Base64-codierte ASCII-Dateien
  • Haben die Erweiterungen .p7b, .p7c
  • Mehrere Plattformen unterstützen sie. Beispielsweise: Windows, Java Tomcat
PFX / PKCS # 12

Sie werden zum Speichern des Serverzertifikats, aller Zwischenzertifikate und des privaten Schlüssels in einer verschlüsselbaren Datei verwendet.

  • Sind Dateien im Binärformat
  • Haben die Erweiterungen .pfx, .p12
  • Wird normalerweise unter Windows zum Importieren und Exportieren von Zertifikaten und privaten Schlüsseln verwendet

Konvertierungsbefehle für openSSL


PEM nach DER

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

PEM nach P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CAcert.cer

PEM nach PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CAcert.crt

DER nach PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem

P7B nach PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

P7B nach PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CAcert.cer

PFX(PKCS#12) nach PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
Mit -nocerts wird nur der private Key ausgegeben.

Zertificate und/oder privaten Schlüssel von .pfx Datei
Hinweis: Die *.pfx Datei ist in einem PKCX#12 Format und enthält privaten sowie öffentlichen Schlüssel.

  • Private key extrahieren:
    openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes

  • Zertifikat extrahieren:
    openssl pkcs12 -in certname.pfx -nokeys -out cert.pem

  • Passphrase entfernen von privaten key:
    openssl rsa -in key.pem -out server.key

Generelle openSSL Befehle

Mit diesen Befehlen können Sie CSRs, Zertifikate und private Schlüssel generieren und andere verschiedene Aufgaben ausführen.

Generieren eines neuen privaten Schlüssel und eine neue Zertifikatsignierungsanforderung
openssl req -out CSR.csr -new -newkey rsa: 2048 -nodes -keyout privateKey.key

Generieren eines selbstsigniertes Zertifikat
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa: 2048 -keyout privateKey.key -out certificate.crt

Generieren einer Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) für einen vorhandenen privaten Schlüssel
openssl req -out CSR.csr -key privateKey.key -new

Generieren einer Zertifikatsignierungsanforderung basierend auf einem vorhandenen Zertifikat
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key

Entfernen der Passphrase aus einem privaten Schlüssel
openssl rsa -in privateKey.pem -out newPrivateKey.pem

 


Drucken