PEM ist das mt Abstand meistgenutze Format. Es handelt sich hierbei um Base64 kodierte ASCII-Dateien, die ein “—–BEGIN CERTIFICATE—–” und “—–END CERTIFICATE Statement beinhalten. Ülicherweise werden sie mit einem Suffix wie .pem, .crt, .cer oder .key versehen.
Serverzertifikate, Zwischenzertifikate und private Schlüssel können alle im PEM-Format vorliegen oder in dieses konvertiert werden. Apache oder ähnliche Server benutzen das PEM-Format. Mehrere PEM Zertifikate und auch der private Schlüssel können in einer Datei zusammengefaßt werden. Aber die meisten Plattformen, wie z.B. der Apache erwarten Zertifiakte und privaten Schlüssel in unterschiedlichen Dateien.
DER ist ein binäres Format. Es hat manchmal .der als Suffix, kann aber auch auf .cer enden. Um herauszufinden, ob das vorligende Zertifikat im PEM- oder DER-Format vorliegt, ist einfach zu prüfen, ob die oben beschriebenen Statements vorkommen. Dieses kann man auch durch einfaches öffnen in einem Texteditor ermitteln.
Alle Zertifikatesformen und auch der private Schlüssel können im DER-Format kodiert werden. DER wird typischerweise auf JAVA-Plattformen eingesetzt, da der dortige SSL-Converter nur Zertifikate im DER-Format konvertiert.
PKCS#7 bzw. P7B sind üblicherweise in Base64 kodiert und benutzen ein Suffix, wie .p7b oder .p7c. P7B-Zertifikate sind an den beiden Statements “—–BEGIN PKCS7—–” und “—–END PKCS7—–” zu erkennen. Eine P7B Datei beinhaltet nur das Zertifikat und das Zertifikat der signierenden CA, nicht den privaten Schlüssel. Viele Plattformen unterstützen dieses Format, z.B. Tomcat oder Microsoft Windows.
PKCS#12 bzw. PFX ist ein binärkodiertes Format. Das Server-Zertifikat, jedes Zwischenzertifikat und der private Schlüssel werden in einer Datei abgelgt. PFX-Dateien werden typischerweise auf Windows-Plattformen zum im- bzw. exportieren verwendet und enden üblicherweise auf .pfx oder .p12.
Konvertierung mit OpenSSL
PEM -> PKCS12: openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile CACert.crt
PEM -> DER: openssl x509 -outform der -in certificate.pem -out certificate.der
PEM -> P7B: openssl crl2pkcs7 –nocrl -in certificate.cer -out certificate.p7b -certfile CACert.cer
DER -> PEM: openssl x509 -inform der -in certificate.cer -out certificate.pem
P7B -> PEM: openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
P7B -> PFX: openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer; openssl pkcs12 -export -in certificate.cer -inkey private.key -out certificate.pfx -certfile CACert.cer
PFX -> PEM: openssl pkcs12 -in certificate.pfx -out certifikate.cer -nodes
Bei der Konvertierung von PFX nach PEM packt openssl alle Zertifikate und den privaten Schlüssel in eine Datei. Es ist jedoch leicht möglich die jeweiligen Zertifikate, sowie den privaten Schlüssel mit den BEGIN- und END-Statements per Copy’n’Paste in eigene Datei zu kopieren und zu speichern.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.