Conversion de P7B à PEM via OpenSSL


39

Sur Ubuntu, je ne peux pas convertir le certificat en utilisant openssl avec succès.

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

Avez-vous vu cette erreur avant?


Êtes-vous sûr que le fichier est un p7b?
Zoredache

Le fichier a-t-il été déplacé entre des serveurs ou téléchargé via FTP? S'il s'agit bien du format correct, il semble que le fichier ait été corrompu. Essayez de re-transférer le fichier sur le serveur en mode binaire (si vous utilisez FTP) ou recopiez-le à partir de la source.
Garrett

Je dis que c'est un p7b basé sur le suffixe du fichier. Je l'ai re-téléchargé via Firefox, mais j'ai toujours la même erreur OpenSSL ...
Kevin Meredith

1
@ Kevin Que file a.p7bvous donne-t-il?
Nic Young

@NicYoung - Je viens de recevoir le message d'erreur ci-dessus. Pas de sortie.
Kevin Meredith

Réponses:


55

Essaye ça:

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

Si cela ne fonctionne pas, amène sur une machine Windows et exporte, suivez ce guide.


8
Notez que le OP avait le paramètre -print_certsdans sa commande. Cela a un impact sur le format de sortie: avec cela, vous obtenez un format PEM (commençant par ----- BEGIN CERTIFICATE -----), et sans cela, vous obtenez un format PKCS # 7 (----- BEGIN PKCS7-- ---)
Sylvain

Cela ne fonctionne que si je laisse tomber la -inform derpartie. Notez également que lors de l’exportation d’une clé à partir du Gestionnaire de certificats Windows, DER et P7B sont deux options distinctes.
Jpaugh

18

Donc, pour combiner les réponses ci-dessus, la commande est la suivante:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Vérifié pour fonctionner sur Windows, en utilisant OpenSSL-Win64

/ Merci Bogdan pour avoir repéré l'erreur


8

J'ai suivi ce guide qui vous demande de changer les lignes d'en-tête / pied de page de

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

à

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

Puis exécutez la commande openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs(où foo.modified.crtest le fichier dans lequel vous avez enregistré la version modifiée). Cela m'a donné les mêmes résultats que lors d'une exportation de certificat Windows, comme suggéré dans d'autres réponses.


5

Pour autant que je sache, les éléments suivants devraient convertir un certificat pkcs7 en un pem

openssl pkcs7 -in certificate_file.p7b -print_certs -out cert.pem

1
Pourquoi voulez-vous dire que cette réponse est liée à ce fil? Parce que comme tu vois. C'est pareil que ci-dessus.
msavara

3

solution rapide dans mon cas (beaucoup de fichiers avec en-tête / pied de page manquant):

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


1
J'avais un certificat encodé en base64 et je n'en savais plus rien et la commande base64 -d m'a épargné beaucoup de problèmes. Cette solution devrait être plus facilement disponible dans les résultats de recherche. Merci!

2

J'ai eu ce problème également. J'allais vérifier un fichier p7b que j'ai copié à partir d'un hôte Win7.

J'ai découvert que gnome keyring peut importer le certificat. De là, il est facile d'exporter vers DER

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.