Chuyển đổi từ P7B sang PEM thông qua OpenSSL


39

Trên Ubuntu, tôi không thể chuyển đổi chứng chỉ bằng openssl thành công.

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

Bạn đã thấy lỗi này trước đây?


Bạn có chắc tập tin là p7b?
Zoredache

Tập tin đã được di chuyển giữa các máy chủ hoặc được tải lên qua FTP? Nếu nó thực sự là định dạng chính xác, có vẻ như nó có thể đã bị hỏng. Hãy thử chuyển lại tệp sang máy chủ ở chế độ nhị phân (nếu sử dụng FTP) hoặc sao chép lại từ nguồn.
Garrett

Tôi nói đó là p7b dựa trên hậu tố của tệp. Tôi đã tải xuống lại qua Firefox, nhưng tôi vẫn gặp lỗi OpenSSL tương tự ...
Kevin Meredith

1
@Kevin Bạn file a.p7btặng gì?
Nic Young

@NicYoung - Tôi vừa nhận được thông báo lỗi ở trên. Không có đầu ra.
Kevin Meredith

Câu trả lời:


55

Thử đi:

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

Nếu nó không hoạt động, mang đến một máy Windows và xuất theo hướng dẫn này .


8
Lưu ý OP có tham số -print_certstrong lệnh của nó. Nó tác động đến định dạng đầu ra: với nó, bạn có được định dạng PEM (bắt đầu bằng ----- BEGIN CHỨNG NHẬN -----), và không có nó, bạn sẽ có được định dạng PKCS # 7 (----- BEGIN PKCS7-- ---)
Sylvain

Điều này chỉ hoạt động nếu tôi thả -inform dermột phần. Cũng lưu ý rằng trong khi xuất khóa từ Windows Cert Manager, DER và P7B là hai tùy chọn riêng biệt.
jpaugh

18

Vì vậy, để kết hợp các câu trả lời trên, lệnh là:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

Được xác minh để hoạt động trên Windows, sử dụng OpenSSL-Win64

/ Cảm ơn Bogdan vì đã phát hiện ra lỗi


8

Tôi đã làm theo hướng dẫn này hướng dẫn bạn thay đổi các dòng tiêu đề / chân trang từ

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

đến

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

Sau đó chạy lệnh openssl pkcs7 -in foo.modified.crt -print_certs -out foo.certs( foo.modified.crttệp mà bạn đã lưu phiên bản sửa đổi vào đâu). Điều này mang lại cho tôi kết quả tương tự như khi chạy qua xuất chứng chỉ Windows như được đề xuất trong các câu trả lời khác.


5

Theo tôi biết, sau đây nên chuyển đổi chứng chỉ pkcs7 thành pem

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

Tại sao bạn có nghĩa là câu trả lời này có liên quan đến chủ đề này? Bởi vì như bạn thấy. Nó giống như trên.
msavara

3

giải pháp nhanh chóng trong trường hợp của tôi (rất nhiều tệp bị thiếu tiêu đề / chân trang):

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


1
Tôi đã có một chứng chỉ được mã hóa base64 và tôi không biết gì thêm về nó và lệnh base64 -d đã cứu tôi rất nhiều rắc rối. Giải pháp này nên có sẵn trong kết quả tìm kiếm. Cảm ơn bạn!

2

Tôi cũng có vấn đề này. Tôi sẽ xác minh tệp p7b mà tôi đã sao chép từ máy chủ Win7.

Tôi phát hiện ra rằng gnome keyring có thể nhập chứng chỉ. Từ đó dễ dàng xuất sang DER

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.