Konvertieren von pfx in pem mit openssl

109

So generieren Sie mit OpenSSL ein .pem CA-Zertifikat und ein Client-Zertifikat aus einer PFX-Datei.

neues bie
quelle

Antworten:

107

Sie können das OpenSSL-Befehlszeilentool verwenden. Die folgenden Befehle sollten den Trick machen

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Wenn Sie möchten, dass Ihre Datei durch ein Passwort usw. geschützt wird, gibt es zusätzliche Optionen.

Sie können die gesamte Dokumentation lesen hier .

Jay
quelle
191

Eine andere Perspektive, um es unter Linux zu tun ... hier ist, wie es gemacht wird, damit die resultierende einzelne Datei den entschlüsselten privaten Schlüssel enthält, so dass etwas wie HAProxy ihn verwenden kann, ohne Sie zur Eingabe einer Passphrase aufzufordern.

openssl pkcs12 -in file.pfx -out file.pem -nodes

Anschließend können Sie HAProxy für die Verwendung der Datei file.pem konfigurieren.


Dies ist eine EDIT aus der vorherigen Version, in der ich diese mehreren Schritte ausgeführt habe, bis mir klar wurde, dass die Option -nodes die Verschlüsselung des privaten Schlüssels einfach umgeht. Aber ich lasse es hier, da es nur beim Unterrichten helfen kann.

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. Im ersten Schritt werden Sie aufgefordert, das Kennwort einzugeben, um die PFX zu öffnen.
  2. Der zweite Schritt fordert Sie dazu auf, eine Passphrase für den Schlüssel zu erstellen.
  3. Im dritten Schritt werden Sie aufgefordert, die Passphrase einzugeben, die Sie gerade zum Speichern entschlüsselt erstellt haben.
  4. Der 4. fasst alles in einer Datei zusammen.

Anschließend können Sie HAProxy für die Verwendung der Datei file.combo.pem konfigurieren.

Der Grund, warum Sie zwei separate Schritte benötigen, in denen Sie eine Datei mit dem Schlüssel und eine andere ohne den Schlüssel angeben, liegt darin, dass Sie, wenn Sie eine Datei haben, die sowohl den verschlüsselten als auch den entschlüsselten Schlüssel enthält, so etwas wie HAProxy immer noch auffordert, die Passphrase einzugeben, wenn es benutzt es.

user2415376
quelle
Ich habe nicht die Zeit damit verbracht, mich mit openssl vertraut zu machen, aber die PEM-Konvertierung enthielt nicht den privaten Schlüssel. Die Bearbeitung lieferte die Details zum Zusammenführen von Zertifikat und Schlüssel in einer PEM-Datei, genau das, was ich brauchte.
Ebt
Auf Windows-Systemen verwenden Sie Typ anstelle von cat
hupseb
Unter Windows ist diese Version von OpenSSL für folgende Dinge einfach zu verwenden: slproweb.com/products/Win32OpenSSL.html
Helge Klein
Die obigen Schritte haben gut funktioniert, um einen PFX in PEM zu konvertieren. Ich musste jedoch einen weiteren Schritt ausführen: Öffnen Sie die Nokey-PEM-Datei in einem Texteditor und verschieben Sie das letzte Zertifikat in der Kette an den Anfang der Datei. Andernfalls würde nginx einen Fehler auslösen, der sich über die Zertifikate beschwert, und sich weigern, sie zu verwenden.
Eugene Romero
In diesem Fall können Sie den Befehl cat neu anordnen, um ihn an die erste Stelle zu setzen. wie: cat file.key file.nokey.pem> file.combo.pem Es sei denn, die file.key selbst hat mehrere in falscher Reihenfolge. Aber in beiden Fällen könnten Sie die Dinge wahrscheinlich programmgesteuert neu arrangieren.
user2415376
10

Obwohl die anderen Antworten richtig sind und gründlich erklärt wurden, hatte ich einige Schwierigkeiten, sie zu verstehen. Hier ist die Methode, die ich verwendet habe ( von hier übernommen ):

Erster Fall: So konvertieren Sie eine PFX-Datei in eine PEM-Datei, die sowohl das Zertifikat als auch den privaten Schlüssel enthält:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

Zweiter Fall: So konvertieren Sie eine PFX-Datei in separate PEM-Dateien mit öffentlichem und privatem Schlüssel:

Extrahiert den privaten Schlüssel aus einem PFX in eine PEM-Datei:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Exportiert das Zertifikat (enthält nur den öffentlichen Schlüssel):

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Entfernt das Passwort (Paraphrase) aus dem extrahierten privaten Schlüssel (optional):

openssl rsa -in key.pem -out server.key
Mohammed Noureldin
quelle