SSL-Zertifikate und private Schluessel koennen in verschiedenen Dateiformaten gespeichert werden. Der Inhalt ist derselbe — nur die Kodierung und Verpackung unterscheiden sich. Die meiste Verwirrung entsteht, wenn ein bestimmtes Format fuer Ihren Server benoetigt wird.
Formatvergleich
| Format | Endung | Kodierung | Enthaelt | Verwendet von |
|---|---|---|---|---|
| PEM | .pem, .crt, .cer, .key | Base64 (Text) | Zertifikat, Schluessel oder Kette (eins pro Datei) | Nginx, Apache, die meisten Linux-Server |
| DER | .der, .cer | Binaer | Einzelnes Zertifikat oder Schluessel | Java, einige Windows-Apps |
| PFX/PKCS#12 | .pfx, .p12 | Binaer | Zertifikat + Schluessel + Kette in einer Datei | Windows IIS, Azure, macOS Schluesselund |
PEM — das gaengigste Format
PEM (Privacy Enhanced Mail) ist base64-kodierter Text. Sie koennen es in einem Texteditor oeffnen:
-----BEGIN CERTIFICATE-----
MIIFYjCCBEqgAwIBAgISA8ht...
(base64-kodierte Daten)
-----END CERTIFICATE-----
PEM-Dateien koennen Zertifikate, private Schluessel oder Zertifikatsketten enthalten. Die Kopfzeile verraet, was drin ist:
BEGIN CERTIFICATE— ein ZertifikatBEGIN PRIVATE KEY— ein privater Schluessel (oderBEGIN RSA PRIVATE KEY/BEGIN EC PRIVATE KEY)BEGIN CERTIFICATE REQUEST— ein CSR
GetHTTPS gibt PEM-Format aus — privkey.pem, cert.pem, chain.pem, fullchain.pem.
DER — binaere Kodierung
DER ist die binaere Form derselben Daten, die PEM als Text kodiert. Es ist nicht menschenlesbar. Wird hauptsaechlich von Java-Anwendungen (keytool) und einigen Windows-Komponenten verwendet.
PFX/PKCS#12 — gebuendeltes Format
PFX (Personal Information Exchange) buendelt das Zertifikat, den privaten Schluessel und die Kette in einer einzelnen passwortgeschuetzten Datei. Windows IIS, Azure App Service und der macOS Schluesselbund erfordern dieses Format.
Zwischen Formaten konvertieren
Alle Konvertierungen verwenden OpenSSL:
PEM → PFX
openssl pkcs12 -export \
-out certificate.pfx \
-inkey privkey.pem \
-in cert.pem \
-certfile chain.pem
Sie werden aufgefordert, ein Export-Passwort festzulegen.
PFX → PEM
# Zertifikat extrahieren
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out cert.pem
# Privaten Schluessel extrahieren
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out privkey.pem
# Kette extrahieren
openssl pkcs12 -in certificate.pfx -cacerts -nokeys -out chain.pem
PEM → DER
openssl x509 -in cert.pem -outform DER -out cert.der
DER → PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem
Welches Format brauche ich?
| Server/Plattform | Format | Benoetigte Dateien |
|---|---|---|
| Nginx | PEM | fullchain.pem + privkey.pem |
| Apache | PEM | cert.pem + chain.pem + privkey.pem |
| IIS (Windows) | PFX | certificate.pfx (aus PEM konvertieren) |
| Azure App Service | PFX | certificate.pfx |
| AWS (ACM) | PEM | cert.pem + chain.pem + privkey.pem (in die Konsole einfuegen) |
| Java (Tomcat) | JKS oder PFX | PEM → PFX → JKS mit keytool konvertieren |
| Node.js | PEM | Dateien direkt im Code lesen |
Wie Sie das Format einer Datei erkennen
Nicht sicher, welches Format eine Datei hat? Pruefen Sie:
# Wenn sie mit "-----BEGIN" beginnt -- es ist PEM (Base64-Text)
head -1 mystery-file.pem
# Wenn sie binaer ist (unlesbarer Text) -- es ist DER oder PFX
file mystery-file.cer
# Ausgabe wie "data" oder "certificate" = DER
# Ausgabe wie "PKCS12" = PFX
# Ein PEM-Zertifikat untersuchen
openssl x509 -in cert.pem -noout -text
# Ein DER-Zertifikat untersuchen
openssl x509 -in cert.der -inform DER -noout -text
# Eine PFX-Datei untersuchen
openssl pkcs12 -in cert.pfx -info -nokeys
Haeufige Verwirrung bei Dateiendungen
| Endung | Bedeutet meistens | Koennte aber sein |
|---|---|---|
.pem | PEM (Base64) | Immer PEM |
.crt | PEM-Zertifikat | DER unter Windows |
.cer | PEM-Zertifikat | DER unter Windows |
.key | PEM privater Schluessel | DER (selten) |
.pfx | PKCS#12-Buendel | Immer PFX |
.p12 | PKCS#12-Buendel | Immer PFX (dasselbe wie .pfx) |
.der | DER (binaer) | Immer DER |
.jks | Java KeyStore | Immer JKS |
Faustregel: Oeffnen Sie die Datei in einem Texteditor. Wenn Sie -----BEGIN CERTIFICATE----- sehen, ist es PEM, unabhaengig von der Endung. Wenn Sie binaeren Datenmist sehen, ist es DER oder PFX.
Haeufig gestellte Fragen
Was ist der Unterschied zwischen .crt, .cer und .pem?
Alle koennen im PEM-Format vorliegen. Die Endung ist eine Namenskonvention, kein Formatindikator. .crt und .cer werden haeufig fuer Zertifikatsdateien verwendet, .pem fuer jede PEM-kodierte Datei. Unter Windows sind .cer-Dateien manchmal DER-kodiert — oeffnen Sie sie in einem Texteditor, um es zu pruefen.
Warum gibt mir GetHTTPS 4 Dateien?
Maximale Kompatibilitaet. GetHTTPS stellt bereit: privkey.pem (privater Schluessel), cert.pem (nur Ihr Zertifikat), chain.pem (Intermediate-CA-Zertifikat), fullchain.pem (Zertifikat + Kette kombiniert). Nginx benoetigt fullchain.pem; Apache benoetigt separate cert.pem + chain.pem; IIS benoetigt PFX (aus PEM konvertieren).
Wie erstelle ich eine PFX fuer Windows/IIS?
Verwenden Sie den OpenSSL-Befehl PEM → PFX oben. Sie benoetigen privkey.pem, cert.pem und chain.pem von GetHTTPS. Die resultierende .pfx kann in IIS, Azure App Service oder den macOS Schluesselbund importiert werden.
Kann ich von einem Format in ein anderes konvertieren ohne den privaten Schluessel?
Sie koennen das Zertifikat zwischen PEM und DER ohne den privaten Schluessel konvertieren. Aber das Erstellen einer PFX erfordert den privaten Schluessel (sie buendelt Zertifikat + Schluessel zusammen). Wenn Sie Ihren privaten Schluessel verloren haben, muessen Sie ein neues Zertifikat erzeugen.
Welches Format verwendet Let’s Encrypt?
Let’s Encrypt (ueber jeden ACME-Client einschliesslich GetHTTPS) gibt PEM-Format aus. Wenn Sie ein anderes Format fuer Ihren Server benoetigen, konvertieren Sie mit den oben genannten OpenSSL-Befehlen.