Diese Anleitung führt Sie durch das Extrahieren von Informationen aus einer PKCS # 12-Datei mit OpenSSL. PKCS # 12 (auch als PKCS12 oder PFX bekannt) ist ein Binärformat zum Speichern einer Zertifikatkette und eines privaten Schlüssels in einer einzigen verschlüsselbaren Datei. PKCS # 12-Dateien werden häufig zum Importieren und Exportieren von Zertifikaten und privaten Schlüsseln auf Windows- und MacOS-Computern verwendet und haben normalerweise die Dateinamenerweiterungen .p12
or .pfx
.
Melden Sie sich hier für den Newsletter von SSL.com an, um weitere hilfreiche Anleitungen und die neuesten Nachrichten zur Cybersicherheit zu erhalten:
Was ist OpenSSL?
OpenSSL ist ein sehr nützliches Open-Source-Befehlszeilen-Toolkit für die Arbeit mit X.509 Zertifikate, Zertifikatsignierungsanforderungen (CSRs) und kryptografische Schlüssel. Wenn Sie eine UNIX-Variante wie Linux oder macOS verwenden, ist OpenSSL wahrscheinlich bereits auf Ihrem Computer installiert. Wenn Sie OpenSSL unter Windows verwenden möchten, können Sie es aktivieren Linux-Subsystem von Windows 10 oder installieren Cygwin. Sie können auch leicht erstellen eine PKCS # 12-Datei mit openSSL.
SSL.com bietet eine Vielzahl von SSL /TLS Serverzertifikate für HTTPS-Websites.
Video
Ersetzen Sie in allen unten gezeigten Beispielen die Namen der Dateien, für die Sie tatsächlich arbeiten INFILE.p12
, OUTFILE.crt
und OUTFILE.key
.
Anzeigen der PKCS # 12-Informationen auf dem Bildschirm
So speichern Sie alle Informationen in einer PKCS # 12-Datei auf dem Bildschirm in PEM-FormatVerwenden Sie diesen Befehl:
openssl pkcs12 -info -in INFILE.p12 -Knoten
Sie werden dann aufgefordert, das Kennwort der PKCS # 12-Datei einzugeben:
Importkennwort eingeben:
Geben Sie das Kennwort ein, das beim Erstellen der PKCS # 12-Datei eingegeben wurde, und drücken Sie enter
. OpenSSL gibt alle Zertifikate und privaten Schlüssel in der Datei auf dem Bildschirm aus:
Taschenattribute localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 subject = / CN = Aaron Russell/emailAddress=*********@gmail.com issuer = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com Client-Zertifikat Intermediate CA RSA R1 ----- BEGIN CERTIFICATE ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg 1Ml2rU-
Privaten Schlüssel verschlüsseln
Wenn Sie den privaten Schlüssel verschlüsseln und vor der Ausgabe mit einem Kennwort schützen möchten, lassen Sie einfach den weg -nodes
Flag vom Befehl:
openssl pkcs12 -info -in INFILE.p12
In diesem Fall werden Sie aufgefordert, ein neues Kennwort einzugeben und zu überprüfen, nachdem OpenSSL Zertifikate ausgegeben hat, und der private Schlüssel wird verschlüsselt (beachten Sie, dass der Text des Schlüssels mit beginnt -----BEGIN ENCRYPTED PRIVATE KEY-----
):
Geben Sie PEM Passphrase: Verifizieren - Geben Sie PEM Passphrase: ----- BEGIN VERSCHLÜSSELT PRIVATE KEY ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ bdw = ----- END VERSCHLÜSSELTE PRIVAT SCHLÜSSEL-----
Nur Zertifikate oder privaten Schlüssel extrahieren
Wenn Sie nur den privaten Schlüssel ausgeben möchten, fügen Sie hinzu -nocerts
zum Befehl:
openssl pkcs12 -info -in INFILE.p12 -nodes -nocerts
Wenn Sie nur die Zertifikate benötigen, verwenden Sie -nokeys
(und da wir uns nicht mit dem privaten Schlüssel befassen, können wir ihn auch sicher weglassen -nodes
):
openssl pkcs12 -info -in INFILE.p12 -nokeys
Speichern Sie Zertifikate und private Schlüssel in Dateien
Sie können die Zertifikate und den privaten Schlüssel aus einer PKCS # 12-Datei exportieren und im PEM-Format in einer neuen Datei speichern, indem Sie einen Ausgabedateinamen angeben:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nodes
Sie werden erneut aufgefordert, das Kennwort der PKCS # 12-Datei einzugeben. Wie zuvor können Sie den privaten Schlüssel verschlüsseln, indem Sie den entfernen -nodes
Flag aus dem Befehl und / oder hinzufügen -nocerts
or -nokeys
um nur den privaten Schlüssel oder die Zertifikate auszugeben. Um eine private Schlüsseldatei zu generieren, können wir diesen Befehl verwenden:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -nodes -nocerts
Verwenden Sie Folgendes, um eine Datei zu erstellen, die nur die Zertifikate enthält:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
Konvertieren Sie den privaten Schlüssel in das PKCS # 1-Format
In den Beispielen wird vor allem der private Schlüssel in der OpenSSL-Standardeinstellung ausgegeben PKCS # 8 Format. Wenn Sie wissen, dass Sie brauchen PKCS # 1 Stattdessen können Sie die Ausgabe des OpenSSL-Dienstprogramms PKCS # 12 je nach Schlüsseltyp an das Dienstprogramm RSA oder EC weiterleiten. Beide folgenden Befehle geben eine Schlüsseldatei im PKCS # 1-Format aus:
RSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl ec -out OUTFILE.key
Hinweis: Sie können den Unterschied zwischen privaten PKCS # 8- und PKCS # 1-Schlüsseldateien anhand der ersten Textzeile erkennen. PKCS # 1-Dateien geben den Algorithmus an:
-----BEGIN RSA PRIVATE KEY-----
PKCS # 8-Dateien zeigen den Algorithmus nicht und können auch verschlüsselt sein:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----