.p7b कुंजी को .pfx में बदलें


10

मेरे पास .p7b प्रारूप में एक SSL प्रमाणपत्र है जिसे मुझे .pfx में बदलने की आवश्यकता है। अगर मैं इसे विंडोज़ सर्टिफिकेट के माध्यम से आज़माता हूँ, तो एक .pfx के रूप में विशेषज्ञ का विकल्प अक्षम है।

Opensl के साथ प्रयास करके मुझे रूपांतरण करने के लिए निम्नलिखित दो आदेश मिले हैं:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

लेकिन मुझे यकीन नहीं है कि तेह एस्कॉन्ड कमांड के लिए किस कुंजी का उपयोग करना है, या CACert.cer किस प्रमाणपत्र को संदर्भित करता है।

मैं इस कुंजी को .pfx प्रारूप में कैसे बदल सकता हूं?

जवाबों:


20

PKCS # 7 में प्रमाणपत्र / निजी-कुंजी जोड़ी के निजी (कुंजी) भाग को शामिल नहीं किया गया है, यह आमतौर पर प्रमाणपत्र प्रसार के लिए उपयोग किया जाता है (उदाहरण के लिए PKCS # 10 प्रमाणपत्र अनुरोध के जवाब के रूप में, S / MIME certs को वितरित करने के लिए। संदेशों को एन्क्रिप्ट करने के लिए, या हस्ताक्षरित संदेशों को मान्य करने के लिए उपयोग किया जाता है)। यह याद रखना महत्वपूर्ण है कि यह केवल उन प्रमाणपत्रों के लिए है जो परिभाषा सार्वजनिक वस्तुओं द्वारा हैं।

PKCS # 12 एक अधिक सार्वभौमिक कंटेनर है - इसका उद्देश्य निजी कुंजी और सार्वजनिक प्रमाणपत्र भागों दोनों को एक साथ संग्रहीत करना है ताकि उन्हें चारों ओर ले जाया जा सके। यह कुंजी के लिए कुछ सुरक्षा प्रदान करने के लिए पासवर्ड संरक्षित होने की क्षमता है।

PFX, PKCS # 12 का पूर्ववर्ती था।

आप (जैसा कि एनीतक बताते हैं) PKCS # 7 से PKCS # 12 तक अतिरिक्त डेटा (निजी कुंजी भाग) के बिना कनवर्ट नहीं कर सकते क्योंकि PKCS # 7 में सभी डेटा नहीं है।

मार्क सटन ने इंगित किया है कि आप पीएफएक्स के रूप में निर्यात करने में असमर्थ क्यों हैं - प्रश्न में प्रमाण पत्र की अपनी निजी कुंजी गैर-निर्यात योग्य है। क्रिप्टोग्राफ़िक सेवा प्रदाता (CSP) उस कुंजी को स्थानांतरित करने की अनुमति नहीं देगा, यह जानबूझकर है। यदि आप मूल प्रमाणपत्र निर्यात योग्य ध्वज सेट के साथ जारी किया गया था, तो एकमात्र * तरीका आप एक निर्यात योग्य प्रमाणपत्र प्राप्त कर सकते हैं। यह भी संभव है कि प्रमाणपत्र के साथ कोई निजी कुंजी न हो, लेकिन मैं यह मान रहा हूं कि यहां ऐसा नहीं है।

विकिपीडिया पर विभिन्न PKCS प्रकारों का एक अच्छा सारांश है ।

  • कम से कम एकमात्र वैध तरीका। CSP \ Crypto Hardware के आधार पर, विशेष रूप से केवल CSP के सॉफ़्टवेयर के लिए तंत्र हो सकते हैं, लेकिन यह सुरक्षा भेद्यता अनुसंधान के लिए एक क्षेत्र है जहाँ तक मेरा संबंध है, सिस्टम व्यवस्थापक नहीं।

धन्यवाद - ऐसा लगता है कि एक नया प्रमाण पत्र खरीदना, इसे पुनर्प्राप्त करने की तुलना में सस्ता हो सकता है, ऐसा करने के लिए हमें किसी तृतीय-पक्ष के साथ समय की मात्रा के आधार पर निपटना होगा।
23

12

मैं हर 2 साल में इससे गुजरता हूं (जब मैं एक कोड-साइनिंग सर्टिफिकेट को नवीनीकृत करता हूं) और यह हर बार दर्द होता है।

जानकारी का एक मुख्य टुकड़ा यह है कि आप .p7b फ़ाइलों को .spc (जैसा कि यहाँ कहा गया है: http://support.microsoft.com/kb/269395 ) का नाम बदल सकते हैं ।

फिर आप अपने PVK + SPC को PFX में बदलने के लिए pvk2pfx.exe टूल का उपयोग कर सकते हैं।

pvk2pfx.exe -pvk input.pvk -pi <existing_input.pvk_password> -spc input.spc -pfx output.pfx -po <new_output.pfx_password>

(आप p7b नाम बदलने के कदम को छोड़ सकते हैं और इसे सीधे उपयोग कर सकते हैं; मैंने कोशिश नहीं की है ...)


यह स्वीकृत उत्तर की तुलना में कहीं अधिक उपयोगी है। मैं कोड पर हस्ताक्षर करने की स्थिति से चकित हूं। जब सर्टिफिकेट समाप्त हो जाता है तो मैं इसे बार-बार दोहराने के बारे में सोचता हूं।
टिम

3

विंडोज़ टूल के साथ यदि pfx विकल्प अक्षम है तो इसका मतलब है कि निजी कुंजी स्थानीय स्टोर से निर्यात करने में सक्षम नहीं है। यह या तो इसकी वजह से है (क्योंकि आपके द्वारा उपयोग किए जाने वाले बॉक्स पर कुंजियां उत्पन्न नहीं हुई थीं) या जब आपने कुंजियों को उत्पन्न किया था तो निजी कुंजी को निर्यात योग्य के रूप में चिह्नित नहीं किया गया था और निर्यात की अनुमति देने के लिए विंडोज़ प्रमाणपत्र टेम्पलेट को कॉन्फ़िगर नहीं किया गया था।

मैं आपके प्रमाणपत्रों को जारी करने के लिए Microsoft प्रमाणपत्र प्राधिकारी का उपयोग कर रहा हूं। क्या ये सही है?

यदि ऐसा है: -

1. सुनिश्चित करें कि प्रमाणपत्र टेम्पलेट निजी कुंजी के निर्यात की अनुमति देता है।
2. आप अपने प्रमाणपत्र अनुरोध कैसे उत्पन्न कर रहे हैं, आप निम्न तकनीक का उपयोग कर सकते हैं

INFATE फ़ाइल को इस प्रकार बनाएँ

[संस्करण]
हस्ताक्षर = "$ Windows NT $

[NewRequest]
विषय =" आदि "
KeySpec = 1 Exportable
= 1
MachineKeySet = TRUE
प्रदाता नाम =" CSPName "
प्रदाता = 1

[RequestAttributes] CertificateTemplate = Exportable = 1 को

नोट करें।
फिर कमांड प्रॉम्प्ट पर fllowing कमांड का उपयोग करें

certreq -new infile.inf reqfile.req // जहाँ infile.inf उपरोक्त फ़ाइल है और reqfile आउटपुट अनुरोध फ़ाइल है

certreq -submit -config \ reqfile.req / CA के लिए प्रमाणित अनुरोध प्रस्तुत करता है

एक बार जब यह पूरा हो जाएगा एक pfx के रूप में प्रमाणपत्र निर्यात करने में सक्षम हो सकता है

वैकल्पिक रूप से गोटो http://www.blacktipconsulting.com/Site/Products.html मैं कहाँ है कि एक बार समाप्त pfx के रूप में प्रमाणपत्र आप और निर्यात के लिए यह सब करता है मेरी खाली कमांड लाइन टूल डाल दिया है


2

जैसा कि हेल्विक ने बताया, PKCS10 की प्रतिक्रिया PKCS7 है और इसमें निजी कुंजी नहीं है। इसलिए CSR जनरेट करते समय आपको privatekey.key फाइल जनरेट करनी चाहिए। आप निम्न आदेशों का उपयोग कर सकते हैं। (मुझे पता है कि यह चार साल पुराना सवाल है लेकिन मैं पृष्ठ पर चर्चा का पालन करते हुए ऐसा नहीं कर सका)।

openssl pkcs7 -inform DER -in PK7BDownloadedArchive.p7b -text -print_certs -out intermediateCert.pem

openssl pkcs12 -export -in intermediateCert.pem -inkey privateKey.key -out FinalPKCS12Cert.p12

सौभाग्य!

सादर, जेई


आपको -informतर्क की आवश्यकता नहीं हो सकती है।
पालसीम

1

मैं गलत हो सकता है, लेकिन मुझे लगता है कि आपके PCKCS # 7 फ़ाइल में आपके प्रमाणपत्र का सार्वजनिक आधा हिस्सा शामिल है।

PKCS # 12 फ़ाइल को दोनों हिस्सों की आवश्यकता होगी - इसलिए इसे -inkeyविकल्प की आवश्यकता है ।

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