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?

Kevin Meredith
sumber
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 .

kuanta
sumber
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

Peet van de Sande
sumber
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.

Curtis Gibby
sumber
5

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

openssl pkcs7 -in certificate_file.p7b -print_certs -out cert.pem
Giuseppe Urso
sumber
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

Cerber
sumber
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

Joakim
sumber