Converta de P7B para PEM via OpenSSL


39

No Ubuntu, não consigo converter o certificado usando o openssl com êxito.

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

Você já viu esse erro antes?


Você tem certeza de que o arquivo é um p7b?
precisa

O arquivo foi movido entre servidores ou enviado via FTP? Se é realmente o formato correto, parece que ele pode ter sido corrompido. Tente transferir novamente o arquivo para o servidor no modo binário (se estiver usando FTP) ou copie-o novamente da fonte.
Garrett

Eu digo que é um p7b baseado no sufixo do arquivo. Eu re baixado-lo via Firefox, mas eu ainda tenho o mesmo erro OpenSSL ...
Kevin Meredith

11
@ Kevin O que file a.p7bvocê tem?
18712 Nic Young

@ NicYoung - Acabei de receber a mensagem de erro acima. Sem saída.
22812 Kevin Meredith

Respostas:


55

Tente o seguinte:

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

Se não funcionar, é trazido para uma máquina Windows e exportado, siga este guia.


8
Observe que o OP tinha o parâmetro -print_certsem seu comando. Ela afeta o formato de saída: com ele, você obtém um formato PEM (começando com ----- BEGIN CERTIFICATE -----), e sem ele, você obtém um formato PKCS # 7 (----- BEGIN PKCS7-- ---)
Sylvain

Isso só funciona se eu largar a -inform derpeça. Observe também que, ao exportar uma chave do Windows Cert Manager, o DER e o P7B são duas opções distintas.
jpaugh 17/10

18

Então, para combinar as respostas acima, o comando é:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Verificado como funcionando no Windows, usando o OpenSSL-Win64

/ Bogdan Obrigado por detectar o erro


8

Segui este guia que o instrui a alterar as linhas de cabeçalho / rodapé de

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

para

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

Em seguida, execute o comando openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs(onde foo.modified.crtestá o arquivo em que você salvou a versão modificada). Isso me deu os mesmos resultados da execução de uma exportação de certificado do Windows, conforme sugerido em outras respostas.


5

Tanto quanto eu sei, o seguinte deve converter um certificado pkcs7 em um pem

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

Por que você quer dizer que esta resposta está relacionada a este tópico? Porque como você vê. É o mesmo que acima.
msavara

3

solução rápida no meu caso (muitos arquivos com cabeçalho / rodapé ausentes):

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


11
Eu tinha um certificado codificado em base64 e não sabia mais nada sobre ele, e o comando base64 -d me salvou de muitos problemas. Essa solução deve estar mais prontamente disponível nos resultados da pesquisa. Obrigado!

2

Eu tive esse problema também. Ia verificar um arquivo p7b que copiei de um host Win7.

Eu descobri que o chaveiro do gnome pode importar o certificado. A partir daí, é fácil exportar para o DER

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.