2011-11-28 18 views
19

पर पीईएम पारंपरिक निजी कुंजी कनवर्ट करें मुझे एक प्रमाणपत्र और पब/निजी कुंजी के साथ एक पीईएम फ़ाइल दी गई है। विशेष रूप से इसमें हेडरPEMCS8 निजी कुंजी

-----BEGIN CERTIFICATE----- 
-----END CERTIFICATE----- 
-----BEGIN RSA PRIVATE KEY----- 
-----END RSA PRIVATE KEY----- 
-----BEGIN RSA PUBLIC KEY----- 
-----END RSA PUBLIC KEY----- 

उस विशिष्ट क्रम में शामिल हैं।

मेरी समझ BEGIN RSA PRIVATE KEY शीर्षलेख के बाद शीर्षलेख के बिना है कि इस पेम फ़ाइल में एन्क्रिप्शन के बिना पारंपरिक प्रारूप (पीकेसीएस 1) में एक निजी कुंजी है।

मुझे जावा सर्वर कोड, विशेष रूप से PKCS8EncodedKeySpec के उपयोग के लिए इस निजी कुंजी को एक डीईआर एन्कोडेड पीकेसीएस 8 अनएन्क्रिप्टेड प्रारूप में परिवर्तित करने की आवश्यकता है। मैंने ओपनएसएसएल की कोशिश की है, दोनों आरएसए और पीकेसी 8 आज्ञाओं के साथ, लेकिन बिना किसी किस्मत के। यदि कुछ आसान है तो openssl का उपयोग करने की कोई विशिष्ट आवश्यकता नहीं है।

विशेष रूप

:

openssl rsa -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem 
openssl rsa -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem -pubin openssl pkcs8 -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem -nocrypt 

मैं भी सफलता के बिना सूचित और outform निर्दिष्ट करने की कोशिश की है।

[email protected]:~/TestCerts$ openssl rsa -in IServer_Key.pem -out IServer_Key.pkcs8.pem -pubin 
unable to load Public Key 
5925:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650: 
Expecting: PUBLIC KEY 

[email protected]:~/TestCerts$ openssl rsa -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem 
unable to load Private Key 
5993:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1316: 
5993:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:828: 
5993:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:748:Field=n, Type=RSA 
5993:error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib:d2i_pr.c:99: 
5993:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:125: 

[email protected]:~/TestCerts$ openssl pkcs8 -in IServer_Key.orig.prikey.pem -out IServer_Key.pkcs8.pem -nocrypt 
Error decrypting key 
6022:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650: 
Expecting: PRIVATE KEY 

इस बिंदु पर किसी भी मदद की बहुत सराहना की जाएगी।

+0

मैंने जावा टैग को हटा दिया क्योंकि यह जावा तक सीमित नहीं है और उम्मीद है कि इसे व्यापक दर्शक मिलेगा – cfi

+0

मुझे लगता है कि अधिकांश ओपनएसएसएल कमांड प्रति फ़ाइल एक वस्तु (कुछ हाथ छोड़ने) की अपेक्षा करते हैं। दूसरी फ़ाइल बनाएं, और केवल इसमें निजी कुंजी जोड़ें ('----- BEGIN आरएसए निजी कुंजी -----' और '----- अंत आरएसए निजी कुंजी -----') । फिर अपने आदेशों को आजमाएं। – jww

+0

[ओपेन्सएसएल पीकेसी 8 डिफ़ॉल्ट प्रारूप आरएसए निजी कुंजी देता है] (https://superuser.com/questions/606215/openssl-pkcs8-default-format-gives-rsa-private-key)। – jww

उत्तर

43

निम्न आदेश का उपयोग करने का प्रयास करें। मैंने कोशिश नहीं की है लेकिन मुझे लगता है कि इसे काम करना चाहिए।

openssl pkcs8 -topk8 -inform PEM -outform DER -in filename -out filename -nocrypt 
+6

यह मैं देता है: त्रुटि: 0906D06C: पीईएम दिनचर्या: कुंजी 140139164128912 decrypting त्रुटि PEM_read_bio: कोई शुरुआत पंक्ति: pem_lib.c: 701: की उम्मीद: निजी कुंजी –

11

openssl साथ PKCS # 8 PKCS # 1 से निजी कुंजी बदलने के लिए:

# openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in pkcs1.key -out pkcs8.key 

कि जब तक आप पीईएम (पाठ स्वरूप) में PKCS # 1 कुंजी के रूप में रूप में काम करेंगे प्रश्न में वर्णित है।

+3

तो यह सिर्फ नीलेश के जवाब की नकल कर रहा है? –

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