2013-02-28 7 views
119

का उपयोग कर रहा विंडोज 7 पर OpenSSL 64 जो मैं openssl-for-windows on Google Code से डाउनलोड कर सकते है। मैं दौड़ने का प्रयास कर रहा हूं:परिवर्तित PKCS # 12 प्रमाणपत्र PEM में OpenSSL

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" 

लेकिन मुझे एक त्रुटि मिलती है।

unable to load private key 

ओपनएसएसएल का उपयोग कर पीकेसीएस # 12 स्टोर से पीईएम में प्रमाणपत्र कैसे निकाला जाए?

+0

स्टैक ओवरफ़्लो प्रोग्रामिंग और विकास प्रश्नों के लिए एक साइट है।यह प्रश्न ऑफ़-विषय प्रतीत होता है क्योंकि यह प्रोग्रामिंग या विकास के बारे में नहीं है। सहायता केंद्र में [मैं यहां कौन से विषय पूछ सकता हूं] (http://stackoverflow.com/help/on-topic) देखें। शायद [सुपर उपयोगकर्ता] (http://superuser.com/) या [यूनिक्स और लिनक्स स्टैक एक्सचेंज] (http://unix.stackexchange.com/) पूछने के लिए एक बेहतर जगह होगी। यह भी देखें [मैं देव ओप्स के बारे में प्रश्न कहां पोस्ट करूं?] (Http://meta.stackexchange.com/q/134306) – jww

+0

@jww मुझे लगता है कि यह प्रश्न 3 साल से अधिक पुराना है कि यह संकेत देने में थोड़ा देर हो चुकी है ऑफ-विषय ध्वज। –

+0

बस एक औपचारिकता है कि लोगों को इसके विषय को पता है। लोग एक ही विषय-वस्तु प्रश्न पूछ रहे हैं, और इस सवाल का हवाला देते हुए। अगर लोगों को अपने विषय से नहीं बताया जाता है, तो वे स्टैक ओवरफ़्लो पर पूछना जारी रखेंगे। – jww

उत्तर

290

प्रयास करें:

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys 
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes 

उसके बाद आप है:

  • newfile.crt.pem में प्रमाण पत्र
  • newfile.key.pem में
  • निजी कुंजी

कहें एक ही फ़ाइल में प्रमाणपत्र और कुंजी निम्न

का उपयोग करें
openssl pkcs12 -in path.p12 -out newfile.pem 
+0

क्या यह संभव है कि निजी कुंजी और प्रमाणपत्र उसी में संग्रहीत किया जाएगा * .pem फ़ाइल? – Ramis

+12

हां, यह है: 'openssl pkcs12 -in path.p12 -out newfile.pem' –

+2

आयात पासवर्ड मांगना। वो क्या है ? –

1

यह जो निजी कुंजी और एक ही फाइल में प्रमाण पत्र (मैं के साथ एप्पल पुश अधिसूचना प्रमाण पत्र इस कोशिश की)

(PushNotif.pem निजी कुंजी और एक फ़ाइल में प्रमाणपत्र शामिल हैं)

है एक .pem फ़ाइल के साथ काम करेंगे

$ openssl PKCS12 निर्यात -इन PushNotif.pem -inkey PushNotif.pem आउट PushNotif.p12
PushNotif.pem के लिए पास वाक्यांश दर्ज करें:
निर्यात पासवर्ड दर्ज करें:
सत्यापित करना - निर्यात पासवर्ड दर्ज करें:

एक बार जब आप अपना पासवर्ड दर्ज कर लेते हैं तो आप जाने के लिए अच्छे हैं।

+1

यह पीईएम को पीकेसीएस 12 में परिवर्तित करेगा और ओपी से पूछे जाने वाले दूसरे तरीके से नहीं होगा। –

15

आपको बस एक पासवर्ड प्रदान करने की आवश्यकता है। आप निम्न संरचना के साथ एक ही कमांड लाइन के भीतर यह कर सकते हैं:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] 

फिर आप पासवर्ड के लिए प्रेरित किया जाएगा अपने आउटपुट फ़ाइल में निजी कुंजी एन्क्रिप्ट करने के लिए।

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes 

और जानकारी:: http://www.openssl.org/docs/apps/pkcs12.html

9

आप अजगर का उपयोग कर सकते हैं, यह भले ही आप आसान है अगर आप निजी कुंजी से एन्क्रिप्ट किए बिना (प्लेन) निर्यात करना चाहते हैं इसके बाद के संस्करण पंक्ति में "नोड्स" विकल्प शामिल करें pyopenssl मॉड्यूल है। संदेश यह है:

from OpenSSL import crypto 

# May require "" for empty password depending on version 

with open("push.p12", "rb") as file: 
    p12 = crypto.load_pkcs12(file.read(), "my_passphrase") 

# PEM formatted private key 
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()) 

# PEM formatted certificate 
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate()) 
+0

क्या 'file' का उपयोग कर फ़ाइल खोलने का कोई कारण नहीं है और' खुला 'नहीं है? मैं बस इसे समझना चाहता हूं क्योंकि मैं इसे भविष्य में उपयोग करने जा रहा हूं (कमांड के रूप में मेरे समाधान कॉलिंग openssh को सरल बनाने के लिए) –

+0

नहीं, कोई फर्क नहीं पड़ता। आप बस 'ओपन ("push.p12",' आरबी ') कर सकते हैं। पढ़ें() '। – KVISH

0

मैं एक PFX फ़ाइल था और nginx के लिए कुंजी फ़ाइल बनाने के लिए की जरूरत है, तो मैं ऐसा किया:

openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes 

तब मैं कुंजी फ़ाइल को संपादित और सभी सामग्री को दूर करने के लिए किया था -----BEGIN PRIVATE KEY----- पर। उसके बाद एनजीआईएनएक्स ने कुंजी फाइल स्वीकार कर ली।

संबंधित मुद्दे