Konversi dari P7B ke PEM melalui OpenSSL


39

Di Ubuntu, saya tidak berhasil mengkonversi sertifikat menggunakan 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

Pernahkah Anda melihat kesalahan ini sebelumnya?


Apakah Anda yakin file tersebut p7b?
Zoredache

Apakah file dipindahkan antar server atau diunggah melalui FTP? Jika itu memang format yang benar, sepertinya itu mungkin telah rusak. Coba transfer kembali file ke server dalam mode biner (jika menggunakan FTP) atau salin kembali dari sumbernya.
Garrett

Saya katakan itu p7b berdasarkan akhiran file. Saya mengunduhnya kembali melalui Firefox, tetapi saya masih mendapatkan kesalahan OpenSSL yang sama ...
Kevin Meredith

1
@ Kevin Apa yang file a.p7bmemberi Anda?
Nic Young

@NicYoung - Saya baru saja mendapatkan pesan kesalahan di atas. Tidak ada output.
Kevin Meredith

Jawaban:


55

Coba ini:

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

Jika tidak berhasil, bawa ke mesin Windows dan ekspor ikuti panduan ini .


8
Perhatikan bahwa OP memiliki parameter -print_certsdalam perintahnya. Ini berdampak pada format output: dengan itu Anda mendapatkan format PEM (dimulai dengan ----- BEGIN CERTIFICATE -----), dan tanpa itu Anda mendapatkan format PKCS # 7 (----- BEGIN PKCS7-- ---)
Sylvain

Ini hanya berfungsi jika saya menjatuhkan -inform derbagian. Perhatikan juga bahwa saat mengekspor kunci dari Windows Cert Manager, DER dan P7B adalah dua opsi berbeda.
jpaugh

18

Jadi untuk menggabungkan jawaban di atas, perintahnya adalah:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Diverifikasi untuk bekerja pada Windows, menggunakan OpenSSL-Win64

/ Terima kasih Bogdan telah menemukan kesalahan


8

Saya mengikuti panduan ini yang memerintahkan Anda untuk mengubah baris header / footer

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

untuk

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

Kemudian jalankan perintah openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs(di mana foo.modified.crtfile tempat Anda menyimpan versi modifikasi). Ini memberi saya hasil yang sama seperti menjalankan melalui ekspor sertifikat Windows seperti yang disarankan dalam jawaban lain.


5

Sejauh yang saya tahu, berikut ini harus mengkonversi sertifikat pkcs7 ke pem

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

1
Mengapa maksud Anda jawaban ini terkait dengan utas ini? Karena seperti yang Anda lihat. Sama seperti di atas.
msavara

3

solusi cepat dalam kasus saya (banyak file dengan header / footer yang hilang):

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


1
Saya memiliki sertifikat yang disandikan base64 dan saya tidak tahu apa-apa lagi tentang hal itu dan perintah base64 -d menyelamatkan saya dari banyak masalah. Solusi ini harus lebih mudah tersedia di hasil pencarian. Terima kasih!

2

Saya punya masalah ini juga. Saya akan memverifikasi file p7b yang saya salin dari host Win7.

Saya menemukan bahwa gnome keyring dapat mengimpor sertifikat. Dari sana mudah untuk diekspor ke DER

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.