OpenSSL을 통해 P7B에서 PEM으로 변환


39

우분투에서 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

전에이 오류를 보셨습니까?


파일이 p7b입니까?
Zoredache

파일이 서버간에 이동되었거나 FTP를 통해 업로드 되었습니까? 실제로 올바른 형식이면 손상되었을 수 있습니다. 이진 모드 (FTP를 사용하는 경우)에서 파일을 서버로 다시 전송하거나 소스에서 다시 복사하십시오.
개럿

파일의 접미사를 기반으로하는 p7b라고 말합니다. ... 나는 파이어 폭스를 통해 그것을 다시 다운로드,하지만 난 여전히 같은 OpenSSL에 오류가있어
케빈 메러디스에게

1
@Kevin 무엇을 file a.p7b제공합니까?
Nic Young

@NicYoung-위의 오류 메시지가 나타납니다. 출력이 없습니다.
케빈 메러디스

답변:


55

이 시도:

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

작동하지 않으면 Windows 시스템으로 가져 와서 내보내기를 수행 하십시오 .


8
OP에는 -print_certs명령에 매개 변수 가 있습니다. 출력 형식에 영향을 미칩니다. PEM 형식 (------ BEGIN CERTIFICATE -----로 시작)을 얻지 않으면 PKCS # 7 형식 (----- BEGIN PKCS7--)을 얻습니다. ---)
Sylvain

-inform der부품을 떨어 뜨린 경우에만 작동합니다 . 또한 Windows Cert Manager에서 키를 내보내는 동안 DER 및 P7B는 두 가지 고유 한 옵션입니다.
jpaugh

18

위의 답변을 결합하려면 명령은 다음과 같습니다.
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

OpenSSL-Win64를 사용하여 Windows에서 작동하는 것으로 확인되었습니다.

오류를 발견 한 Bogdan에게 감사합니다.


8

나는 다음 이 가이드 에서 머리글 / 바닥 글 행을 변경하도록 지시

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

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

그런 다음 명령을 실행하십시오 openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs( foo.modified.crt수정 된 버전을 저장 한 파일). 이것은 다른 답변에서 제안한 것처럼 Windows 인증서 내보내기를 통해 실행하는 것과 동일한 결과를 얻었습니다.


5

내가 아는 한 다음은 pkcs7 인증서를 pem으로 변환해야합니다.

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

이 답변이이 글타래와 관련이 있다는 것을 의미하는 이유는 무엇입니까? 알다시피 위와 같습니다.
msavara

3

내 경우의 빠른 솔루션 (헤더 / 바닥 글이없는 많은 파일) :

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


1
나는 base64로 인코딩 된 인증서를 가지고 있었고 그것에 대해 더 이상 아무것도 알지 못했고 base64 -d 명령으로 많은 문제가 발생했습니다. 이 솔루션은 검색 결과에서보다 쉽게 ​​사용할 수 있어야합니다. 감사합니다!

2

나도이 문제가 있었다. Win7 호스트에서 복사 한 p7b 파일을 확인하려고했습니다.

그놈 키링으로 인증서를 가져올 수 있다는 것을 알았습니다. 거기에서 DER로 쉽게 내보낼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.