Перетворити з P7B в PEM через OpenSSL


39

У Ubuntu я не можу успішно конвертувати сертифікат, використовуючи 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, заснований на суфіксі файлу. Я повторно завантажив його через Firefox, але я все-таки отримав ту саму помилку OpenSSL ...
Кевін Мередіт

1
@Kevin Що file a.p7bтобі дає?
Nic Young

@NicYoung - я просто отримую вищезгадане повідомлення про помилку. Виходу немає
Кевін Мередіт

Відповіді:


55

Спробуйте це:

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

Якщо це не працює, підключіть до машини Windows та експортуйте, дотримуйтесь цього керівництва.


8
Зверніть увагу, що ОП мав параметр -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

Перевірено, що працює в Windows, використовуючи OpenSSL-Win64

/ Дякую Богдану за виявлення помилки


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 cert в 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

У мене теж була ця проблема. Я збирався перевірити файл p7b, який я скопіював з хоста Win7.

Я дізнався, що ключі gnome можуть імпортувати сертифікат. Звідти легко експортувати до DER

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.