OpenSSL के माध्यम से P7B से PEM में परिवर्तित करें


39

उबंटू पर, मैं प्रमाण-पत्र को ओपनएसएल द्वारा सफलतापूर्वक परिवर्तित नहीं कर सकता।

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 है?
ज़ोराडशे

फ़ाइल को सर्वर के बीच स्थानांतरित किया गया था या एफ़टीपी के माध्यम से अपलोड किया गया था? यदि यह वास्तव में सही प्रारूप है, तो ऐसा लगता है जैसे यह भ्रष्ट हो गया है। फ़ाइल को बाइनरी मोड में सर्वर पर फिर से स्थानांतरित करने का प्रयास करें (यदि एफ़टीपी का उपयोग कर रहे हैं) या स्रोत से इसे फिर से कॉपी करें।
गैरेट

मैं कहता हूं कि यह फ़ाइल के प्रत्यय पर आधारित एक p7b है। मैंने इसे फ़ायरफ़ॉक्स के माध्यम से फिर से डाउनलोड किया, लेकिन मुझे अभी भी वही ओपनएसएसएल त्रुटि मिली ...
केविन मेरेडिथ

1
@ केविन आपको क्या file a.p7bदेता है?
निक यंग

@ नीकॉन्ग - मुझे सिर्फ उपरोक्त त्रुटि संदेश मिलता है। उत्पादन नही।
केविन मेरेडिथ

जवाबों:


55

इसे इस्तेमाल करे:

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

यदि यह काम नहीं करता है, तो एक विंडोज मशीन में लाता है और निर्यात इस गाइड का पालन करता है ।


8
ध्यान दें कि ओपी के पास -print_certsइसकी कमांड में पैरामीटर था । यह आउटपुट स्वरूप को प्रभावित करता है: इसके साथ आपको एक PEM प्रारूप मिलता है (----- BEGIN CERTIFICATE ----- के साथ शुरू), और इसके बिना आपको PKCS # 7 प्रारूप (----- BEGIN PKCS7--) मिलता है ---)
सिल्वेन

यह केवल तभी काम करता है जब मैं -inform derहिस्सा छोड़ देता हूं । यह भी ध्यान दें कि विंडोज सर्टिफिकेट मैनेजर से चाबी निर्यात करते समय, डीईआर और पी 7 बी दो अलग-अलग विकल्प हैं।
jpaugh

18

तो उपरोक्त उत्तरों को संयोजित करने के लिए, कमांड है:
openssl pkcs7 -in cert.p7b -inform DER -print_certs -out cert.pem

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 सर्टिफिकेट को pem में बदलना चाहिए

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

क्यों आप इस जवाब का मतलब इस धागे से संबंधित है? क्योंकि जैसा आप देख रहे हैं। यह ऊपर के समान है।
msavara

3

मेरे मामले में त्वरित समाधान (लापता हेडर / फुटर के साथ बहुत सारी फाइलें):

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


1
मेरे पास बेस 64 एनकोडेड सर्टिफिकेट था और मुझे इसके बारे में ज्यादा कुछ नहीं पता था और बेस 64-डी कमांड ने मुझे बहुत परेशानी से बचाया। यह समाधान खोज परिणामों में अधिक आसानी से उपलब्ध होना चाहिए। धन्यवाद!

2

मुझे यह समस्या भी हुई। मैं एक p7b फ़ाइल की पुष्टि करने जा रहा था जिसे मैंने एक Win7 होस्ट से कॉपी किया था।

मुझे पता चला कि सूक्ति कीरिंग प्रमाणपत्र को आयात कर सकता है। वहां से डीईआर को निर्यात करना आसान है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.