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?


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.


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


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.


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

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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.