Konvertierung von P7B nach PEM über OpenSSL

39

Unter Ubuntu kann ich mit openssl kein Zertifikat erfolgreich konvertieren.

vagrant@dev:/vagrant/keys$ openssl pkcs7 -print_certs -in a.p7b -out a.cer 
unable to load PKCS7 object <blah blah>:PEM
routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: PKCS7

Haben Sie diesen Fehler schon einmal gesehen?

Kevin Meredith
quelle
Sind Sie sicher, dass die Datei ein P7B ist?
Zoredache
Wurde die Datei zwischen Servern verschoben oder über FTP hochgeladen? Wenn es sich tatsächlich um das richtige Format handelt, scheint es, als wäre es beschädigt worden. Versuchen Sie, die Datei im Binärmodus erneut auf den Server zu übertragen (wenn Sie FTP verwenden), oder kopieren Sie sie erneut von der Quelle.
Garrett,
Ich sage, es ist ein p7b basierend auf dem Suffix der Datei. Ich habe es über Firefox erneut heruntergeladen, aber ich habe immer noch den gleichen OpenSSL-Fehler ...
Kevin Meredith
1
@ Kevin Was file a.p7bgibst du?
Nic Young
@NicYoung - Ich erhalte gerade die obige Fehlermeldung. Keine Leistung.
Kevin Meredith

Antworten:

55

Versuche dies:

$ openssl pkcs7 -inform der -in a.p7b -out a.cer

Wenn es nicht funktioniert, bringe es zu einem Windows-Rechner und exportiere nach dieser Anleitung.

Quanten
quelle
8
Beachten Sie, dass das OP den Parameter -print_certsin seinem Befehl hatte. Dies wirkt sich auf das Ausgabeformat aus: Damit erhalten Sie ein PEM-Format (beginnend mit ----- BEGIN CERTIFICATE -----) und ohne dieses Format erhalten Sie ein PKCS # 7-Format (----- BEGIN PKCS7-- ---)
Sylvain
Dies funktioniert nur, wenn ich das -inform derTeil fallen lasse. Beachten Sie auch, dass DER und P7B beim Exportieren eines Schlüssels aus Windows Cert Manager zwei unterschiedliche Optionen sind.
Jpaugh
18

Um die obigen Antworten zu kombinieren, lautet der Befehl:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Es wurde bestätigt, dass es unter Windows mit OpenSSL-Win64 funktioniert

/ Danke Bogdan, dass du den Fehler entdeckt hast

Peet van de Sande
quelle
8

Ich habe diesen Leitfaden befolgt , der Sie anweist, die Kopf- / Fußzeilen von zu ändern

-----BEGIN PKCS #7 SIGNED DATA-----
[data]
-----END PKCS #7 SIGNED DATA-----

zu

-----BEGIN CERTIFICATE-----
[data]
-----END CERTIFICATE-----

Führen Sie dann den Befehl aus openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs(wo foo.modified.crtbefindet sich die Datei, in der Sie die geänderte Version gespeichert haben). Dies ergab die gleichen Ergebnisse wie das Ausführen eines Windows-Zertifikatexports, wie in anderen Antworten vorgeschlagen.

Curtis Gibby
quelle
5

Soweit ich weiß, sollte das Folgende ein pkcs7-Zertifikat in ein pem konvertieren

openssl pkcs7 -in certificate_file.p7b -print_certs -out cert.pem
Giuseppe Urso
quelle
Warum bezieht sich diese Antwort auf diesen Thread? Denn wie du siehst. Es ist dasselbe wie oben.
Msavara
3

schnelle Lösung in meinem Fall (viele Dateien mit fehlender Kopf- / Fußzeile):

base64 -d $FILE | openssl pkcs7 -inform DER -print_certs

Cerber
quelle
1
Ich hatte ein Base64-codiertes Zertifikat und wusste nichts mehr darüber, und der Befehl base64 -d ersparte mir viel Ärger. Diese Lösung sollte in den Suchergebnissen leichter verfügbar sein. Danke!
2

Ich hatte auch dieses Problem. Ich wollte eine p7b-Datei überprüfen, die ich von einem Win7-Host kopiert habe.

Ich fand heraus, dass der Gnome-Schlüsselring das Zertifikat importieren kann. Von dort ist es einfach, nach DER zu exportieren

Joakim
quelle