Converti da P7B a PEM tramite OpenSSL


39

Su Ubuntu, non riesco a convertire correttamente il certificato usando openssl.

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

Hai già visto questo errore?


Sei sicuro che il file sia un p7b?
Zoredache,

Il file è stato spostato tra i server o caricato tramite FTP? Se è davvero il formato corretto, sembra che potrebbe essere danneggiato. Prova a trasferire nuovamente il file sul server in modalità binaria (se si utilizza FTP) o copiarlo nuovamente dall'origine.
Garrett,

Dico che è un p7b basato sul suffisso del file. L'ho scaricato di nuovo tramite Firefox, ma ho ancora lo stesso errore OpenSSL ...
Kevin Meredith

1
@Kevin Cosa file a.p7bti dà?
Nic Young,

@NicYoung - Ho appena ricevuto il messaggio di errore sopra riportato. Nessuna uscita
Kevin Meredith,

Risposte:


55

Prova questo:

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

Se non funziona, porta su un computer Windows ed esporta segui questa guida.


8
Si noti che l'OP aveva il parametro -print_certsnel suo comando. Influisce sul formato di output: con esso ottieni un formato PEM (a partire da ----- INIZIA CERTIFICATO -----), e senza di esso ottieni un formato PKCS # 7 (----- INIZIA PKCS7-- ---)
Sylvain,

Funziona solo se lascio cadere la -inform derparte. Si noti inoltre che durante l'esportazione di una chiave da Windows Cert Manager, DER e P7B sono due opzioni distinte.
jpaugh

18

Quindi, per combinare le risposte sopra, il comando è:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Verificato che funzioni su Windows, usando OpenSSL-Win64

/ Grazie Bogdan per aver individuato l'errore


8

Ho seguito questa guida che ti dice di cambiare le righe di intestazione / piè di pagina

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

a

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

Quindi eseguire il comando openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs(dove si foo.modified.crttrova il file in cui è stata salvata la versione modificata). Questo mi ha dato gli stessi risultati di un'esportazione di certificati Windows come suggerito in altre risposte.


5

Per quanto ne so, quanto segue dovrebbe convertire un certificato pkcs7 in un pem

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

1
Perché vuoi dire che questa risposta è correlata a questa discussione? Perché come vedi. È come sopra.
msavara,

3

soluzione rapida nel mio caso (molti file con intestazione / piè di pagina mancanti):

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


1
Avevo un certificato con codifica base64 e non ne sapevo più nulla e il comando base64 -d mi ha salvato un sacco di problemi. Questa soluzione dovrebbe essere più facilmente disponibile nei risultati di ricerca. Grazie!

2

Ho avuto anche questo problema. Stavo per verificare un file p7b che ho copiato da un host Win7.

Ho scoperto che il portachiavi di gnome può importare il certificato. Da lì è facile esportare in DER

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.