2013-02-28 10 views
119

Ich habe OpenSSL x64 unter Windows 7, die ich von openssl-for-windows on Google Code heruntergeladen habe. Ich versuche zu laufen:Konvertieren von PKCS # 12-Zertifikat in PEM mit OpenSSL

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" 

aber ich bekomme einen Fehler.

Wie extrahiere ich das Zertifikat in PEM aus PKCS # 12 speichern mit OpenSSL?

+0

Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen.Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. Siehe auch [Wo stelle ich Fragen zu Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

+0

@jww Ich denke, dass diese Frage über 3 Jahre alt ist, dass es ein bisschen spät ist zu signalisieren das Off-Topic-Flag. –

+0

Nur eine Formalität, so dass Leute sein Off-Topic kennen. Die Leute stellen die gleichen off-topic Fragen und zitieren diese Frage. Wenn Leuten nicht mitgeteilt wird, dass sie nicht zum Thema gehören, werden sie weiterhin nach Stack Overflow fragen. – jww

Antwort

290

Versuchen:

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys 
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes 

Danach haben Sie:

  • Zertifikat in newfile.crt.pem
  • privaten Schlüssel in newfile.key.pem

zu setzen Das Zertifikat und der Schlüssel in der gleichen Datei verwenden die folgenden

openssl pkcs12 -in path.p12 -out newfile.pem 
+0

Ist es möglich, dass private Schlüssel und Zertifikat in der gleichen gespeichert werden * .pem Datei? – Ramis

+12

Ja, es ist: 'openssl pkcs12 -in Pfad.p12 -out newfile.pem' –

+2

fragt nach Import-Passwort. was ist das ? –

1

Dies wird mit einer .pem Datei arbeiten, die privaten Schlüssel und das Zertifikat in der gleichen Datei hat (Ich habe versucht, diese mit Apple Push Notification Zertifikat)

(PushNotif.pem private Schlüssel und Zertifikat in einer Datei enthält)

$ openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Geben Sie Passphrase für PushNotif.pem:
eingeben Export Passwort:
Verifying - Enter Export Passwort:

Sobald Sie Ihr Passwort eingegeben haben, können Sie loslegen.

+1

Dies wird PEM zu PKCS12 konvertieren und nicht umgekehrt, was OP gefragt hat. –

15

Sie müssen nur ein Passwort eingeben. Sie können es innerhalb der gleichen Befehlszeile mit der folgenden Syntax tun:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] 

Sie werden dann nach einem Passwort gefragt werden, um die privaten Schlüssel in der Ausgabedatei zu verschlüsseln. Fügen Sie die „Knoten“ Option in der Zeile über, wenn Sie den privaten Schlüssel unverschlüsselt (Klartext) exportieren:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes 

Weitere Informationen: http://www.openssl.org/docs/apps/pkcs12.html

9

Wenn Sie Python verwenden können, ist es noch einfacher, wenn Sie ist Habe das pyopenssl Modul. Hier ist sie:

from OpenSSL import crypto 

# May require "" for empty password depending on version 

with open("push.p12", "rb") as file: 
    p12 = crypto.load_pkcs12(file.read(), "my_passphrase") 

# PEM formatted private key 
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()) 

# PEM formatted certificate 
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate()) 
+0

Gibt es einen Grund, die Datei mit 'Datei' und nicht' Öffnen' zu öffnen? Ich will es nur verstehen, wie ich es in Zukunft verwenden werde (um meine Lösung zu vereinfachen, die openssh als Befehl aufruft) –

+0

Nein, kein Unterschied. Sie können einfach öffnen ("push.p12", "rb"). Read() '. – KVISH

0

ich eine PFX-Datei an und benötigt Schlüsseldatei für NGINX zu erstellen, so dass ich tat dies:

openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes 

Dann hatte ich die KEY-Datei zu bearbeiten und alle Inhalte entfernen oben zu -----BEGIN PRIVATE KEY-----. Danach hat NGINX die KEY-Datei akzeptiert.

Verwandte Themen