Welche Zertifikatsformate es gibt
Ein Zertifikat ist immer dasselbe X.509-Objekt (RFC 5280). Je nach System steckt es in einer anderen Verpackung, und genau die müssen Sie wechseln, wenn ein Server oder ein Gerät das Zertifikat nicht annimmt.
- PEM ist ein Textformat nach RFC 7468. Es beginnt mit
-----BEGIN CERTIFICATE-----, dazwischen steht Base64. Eine Datei kann mehrere Blöcke enthalten, etwa Zertifikat und Zwischenzertifikat. nginx, Apache und Let's Encrypt arbeiten mit PEM. - DER sind dieselben Daten binär, ohne Textrahmen. Üblich bei Java und manchen Geräten.
- PFX oder P12 (PKCS#12, RFC 7292) ist eine passwortgeschützte Datei, die Zertifikat, Kette und privaten Schlüssel zusammen enthält. Windows, IIS, Exchange und viele NAS-Systeme erwarten sie. PFX und P12 sind dasselbe Format mit anderer Endung.
- KEY ist der private Schlüssel als PEM, meist als
BEGIN PRIVATE KEY, ältere Dateien heißenRSA PRIVATE KEYoderEC PRIVATE KEY. Mit Passwort stehtENCRYPTED PRIVATE KEYim Kopf.
Die Endungen .crt und .cer sagen nichts über den Inhalt. Beide können PEM-Text oder DER enthalten. Nicht unterstützt sind Java-Keystores (JKS), PKCS#7-Dateien (.p7b), Smartcards und Zertifikatsanforderungen. Neue Schlüssel erzeugt das Werkzeug nicht.
PFX in PEM umwandeln, zum Beispiel für nginx oder Apache
Webserver unter Linux erwarten Zertifikat, Kette und Schlüssel als getrennte PEM-Dateien. Eine PFX-Datei aus Windows oder IIS müssen Sie deshalb zerlegen. Legen Sie die Datei oben ab und geben Sie das Passwort ein. Sie bekommen vier Dateien: zertifikat.crt mit Ihrem Server-Zertifikat, kette.pem mit den Zwischenzertifikaten, fullchain.pem mit Zertifikat und Zwischenzertifikaten in der Reihenfolge, die nginx für ssl_certificate verlangt, und privat.key mit dem Schlüssel.
Beim Schlüssel haben Sie die Wahl. Mit neuem Passwort verschlüsselt ist er sicherer abgelegt, nginx und Apache starten damit aber nicht ohne zusätzliche Einstellung. Der gängige Weg ist ein unverschlüsselter Schlüssel, der nur für den Dienst lesbar auf dem Server liegt. Das Werkzeug fragt dafür ausdrücklich nach und warnt davor. Die Wurzel gehört nicht in fullchain.pem, Browser kennen sie bereits. Der Server selbst läuft für HTTPS über Port 443, siehe die Portnummern-Liste.
PEM in PFX umwandeln, zum Beispiel für Windows oder ein NAS
Let's Encrypt, Hoster und Zertifizierungsstellen liefern PEM-Dateien. Windows, Exchange und viele NAS-Systeme wollen dagegen eine PFX-Datei. Die FRITZ!Box braucht keine PFX-Datei, aber auch keine getrennten Dateien: Laut AVM-Wissensdatenbank müssen Zertifikat und privater Schlüssel zusammen in einer einzigen PEM-Datei stehen. Der Schlüssel muss ein RSA-Schlüssel sein (EC wird nicht unterstützt), ein Kennwort ist erlaubt. Das Werkzeug bietet dafür den Download fritzbox.pem an, mit Zertifikat, Zwischenzertifikaten und Schlüssel. Per Hand geht es auch: cat fullchain.pem privat.key > fritzbox.pem. Ist der Schlüssel unverschlüsselt, schützen Sie die Datei besonders und löschen Sie sie nach dem Import. Wählen Sie Zertifikat, Zwischenzertifikate und Schlüssel zusammen aus oder fügen Sie den PEM-Text in das Feld ein. Das Werkzeug ordnet die Kette, prüft, ob der Schlüssel zum Zertifikat gehört, und baut die PFX-Datei. Das Passwort vergeben Sie selbst. Es schützt Schlüssel und Datei, und es lässt sich nicht wiederherstellen, wenn Sie es vergessen. Geben Sie das Passwort der PFX-Datei auf einem anderen Weg weiter als die Datei selbst, zum Beispiel telefonisch.
Fehlt ein Zwischenzertifikat, meldet das Werkzeug es. Manche Systeme laden fehlende Zwischenzertifikate selbst nach, andere lehnen die Verbindung ab. Packen Sie deshalb alle mit in die Datei.
Modern oder kompatibel: welche Verschlüsselung für die PFX-Datei
Das Profil Modern entspricht dem Standard von OpenSSL 3: AES-256-CBC mit PBKDF2 und HMAC-SHA-256, Prüfsumme SHA-256. Das Profil Kompatibel nutzt 3DES und SHA-1, wie die OpenSSL-Optionen -certpbe PBE-SHA1-3DES und -macalg sha1, und ähnelt damit openssl pkcs12 -legacy. Der Unterschied: -legacy schützt die Zertifikate mit dem noch schwächeren RC2-40, das Werkzeug nimmt auch dort 3DES.
Probieren Sie zuerst Modern. Lehnt das Zielsystem die Datei ab, etwa mit „Passwort falsch“ trotz richtiger Eingabe oder mit „Dateiformat nicht unterstützt“, wählen Sie Kompatibel. Ältere Windows-Versionen, ältere NAS-Systeme sowie Programme mit alter Kryptobibliothek kennen AES in PFX-Dateien oft nicht. Kompatibel ist schwächer, 3DES und SHA-1 gelten als veraltet. Nehmen Sie es nur, wenn es nötig ist, und wählen Sie dann ein langes Passwort.
Zertifikat auslesen: Ablaufdatum, Domains und Kette
Nach dem Laden zeigt das Werkzeug je Zertifikat den Antragsteller, den Aussteller, die Seriennummer, die Gültigkeit mit den Tagen bis zum Ablauf, die Domains aus dem Feld Subject Alternative Name, Schlüsseltyp und Länge sowie den SHA-256-Fingerabdruck. Läuft ein Zertifikat in 30 Tagen oder weniger ab, ist die Zeile hervorgehoben.
Oben steht, ob die Kette vollständig ist, also ob der Aussteller des einen Zertifikats der Antragsteller des nächsten ist. Geprüft werden nur die Namen, nicht die Signaturen und nicht, ob ein Zertifikat widerrufen wurde. Außerdem vergleicht das Werkzeug den öffentlichen Teil des Schlüssels mit dem Zertifikat. Das hilft, wenn Sie Dateien aus mehreren Bestellungen haben und nicht mehr wissen, was zusammengehört. Liegen mehrere Zertifikate vor, nimmt das Werkzeug das Server-Zertifikat, zu dem der Schlüssel passt, und lässt Sie sonst auswählen. Nicht zugehörige Zertifikate, etwa aus einem Ordner wie /etc/letsencrypt/archive, erscheinen als solche und kommen in keinen Download und nicht in die PFX-Datei. Fehlt ein Aussteller, sagt das Werkzeug, dass es die Wurzel oder ein Zwischenzertifikat sein kann. Für das Zertifikat einer Website ohne Datei nehmen Sie den Hosting-Check.
Die gleichen Schritte mit OpenSSL
Alles lässt sich auch selbst erledigen. Unter dem Ergebnis zeigt das Werkzeug die passenden Befehle. Grundlage ist die Dokumentation von openssl pkcs12. Die wichtigsten Befehle:
- Zertifikat aus der PFX holen:
openssl pkcs12 -in zertifikat.pfx -clcerts -nokeys -out zertifikat.crt - Zwischenzertifikate:
openssl pkcs12 -in zertifikat.pfx -cacerts -nokeys -out kette.pem(OpenSSL schreibt dabei auch die Wurzel mit, falls sie in der PFX-Datei steckt, das Werkzeug lässt sie inkette.pemweg) - Privaten Schlüssel unverschlüsselt:
openssl pkcs12 -in zertifikat.pfx -nocerts -noenc -out privat.key(bei OpenSSL 1.1 und älter-nodesstatt-noenc) - PEM in PFX:
openssl pkcs12 -export -inkey privat.key -in zertifikat.crt -certfile kette.pem -out zertifikat.pfx
Für das Profil Kompatibel hängen Sie bei OpenSSL 3 die Optionen -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -macalg sha1 an. Meldet OpenSSL 3 beim Zerlegen einer älteren PFX-Datei unsupported, hängen Sie -legacy an den Befehl.
Warum Sie Ihren privaten Schlüssel nirgends hochladen sollten
Wer Ihren privaten Schlüssel kennt, kann sich als Ihre Domain ausgeben, Verbindungen mitlesen oder gefälschte Seiten betreiben. Viele Online-Konverter verlangen den Upload der PFX-Datei samt Passwort. Selbst bei ehrlichen Betreibern landet die Datei dann auf einem fremden Server, in Protokollen oder Sicherungen.
Dieses Werkzeug rechnet in Ihrem Browser. Die Arbeitsfläche läuft in einem abgeschotteten Rahmen. Sie kann nur die eigene Rechenbibliothek von dieser Domain nachladen, und das erst nach Ihrer Dateiwahl. Daten senden kann sie nicht, und Inhalte an die umgebende Seite, auf der die Anzeigen laufen, gibt sie auch nicht weiter. Dateien und Passwörter bleiben im Arbeitsspeicher und verschwinden beim Neuladen oder mit „Alles leeren“. Sie können das selbst nachprüfen: Im Netzwerk-Tab der Entwicklerwerkzeuge Ihres Browsers erscheint beim Umwandeln keine Anfrage mit Ihren Daten. Ein Schlüssel, der einmal an einen fremden Ort geraten ist, gilt als kompromittiert. Lassen Sie dann das Zertifikat neu ausstellen. Auch Dokumente mit vertraulichem Inhalt geben Sie besser geschützt weiter, dafür gibt es das Werkzeug PDF-Passwort.