2013-07-18 6 views
67

मुझे पहले मेरे प्रश्न की व्याख्या करने दें। मैं एक सीए से एक प्रमाणपत्र खरीदा है और सीएसआर और निजी कुंजी उत्पन्न करने के लिए निम्न स्वरूप का प्रयोग किया:एक निजी कुंजी को आरएसए निजी कुंजी में कैसे परिवर्तित करें?

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr 

जब मैं server.key फ़ाइल खोलते हैं, मुझे लगता है कि यह साथ शुरू होता है "----- BEGIN निजी कुंजी ----- "

मैं अपने सर्वर पर SSL प्रमाणपत्र का उपयोग करता हूं और सब ठीक दिखता है।

अब मैं एक ही प्रमाण को एडब्ल्यूएस आईएएम पर अपलोड करना चाहता हूं ताकि मैं इसे बीनस्टॉक लोड बैलेंसर द्वारा उपयोग कर सकूं। मैं इस एडब्ल्यूएस डॉक http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file -k privatekey.pem -s certificate_object_name 

मैं के रूप में प्रमाणपत्र फ़ाइल नाम बदलने से निम्न आदेश का उपयोग आवश्यक है, लेकिन यह त्रुटि मिलती रहती: "। 400 MalformedCertificate अमान्य निजी कुंजी"

दिलचस्प बात यह है, एडब्ल्यूएस दस्तावेज़ पृष्ठ पर, नमूना निजी कुंजी है कि वे के साथ शुरू होता दिखा रहा है "आरएसए निजी कुंजी ------- शुरू --------"

है openssl का उपयोग कर अपनी निजी कुंजी को एक आरएसए निजी कुंजी में बदलने का कोई तरीका है?

उत्तर

105

ओपनएसएसएल के नए संस्करणों में BEGIN निजी कुंजी कहें क्योंकि उनमें निजी कुंजी + एक ओआईडी है जो कुंजी प्रकार की पहचान करती है (इसे पीकेसीएस 8 प्रारूप के रूप में जाना जाता है)। पुरानी शैली कुंजी प्राप्त करने के (या तो PKCS1 या पारंपरिक OpenSSL प्रारूप के रूप में जाना जाता है) आप यह कर सकते हैं:

openssl rsa -in server.key -out server_new.key 

वैकल्पिक रूप से, आप एक PKCS1 कुंजी है और चाहते हैं PKCS8:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem 
+0

बिल्कुल सही !! एक जादू की तरह काम किया। बहुत धन्यवाद! –

+1

यह अजीब त्रुटि संदेश जैसे 'अमान्य पीईएम संरचना,' ----- BEGIN ... 'missing.' जैसे साइबरडक जैसे उपकरणों से प्राप्त करने का समाधान है जबकि एक ही कुंजी के साथ शुद्ध एसएसएच काम कर रहा है। – Daniel

+0

यह मेरे लिए काम किया। विंडोज उपयोगकर्ता ओपनएसएसएल यहां प्राप्त कर सकते हैं: http://slproweb.com/products/Win32OpenSSL.html – ben

14

यह हो सकता है कुछ मदद की (शाब्दिक बैकस्लैश '\' आदेशों में लिख नहीं करते, वे संकेत मिलता है कि "सब कुछ एक लाइन पर होना चाहिए था" होती हैं):

Which Command to Apply When

यह है ऐसा लगता है कि सभी आदेश (ग्रे में) किसी भी प्रकार की कुंजी फ़ाइल (हरे रंग में) को "इन" तर्क के रूप में लेते हैं। जो अच्छा है।

यहाँ आसान कॉपी-पेस्ट करने के लिए फिर से आदेशों हैं:

openssl rsa            -in $FF -out $TF 
openssl rsa -aes256          -in $FF -out $TF 
openssl pkcs8 -topk8 -nocrypt        -in $FF -out $TF 
openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -in $FF -out $TF 

और

openssl rsa -check -in $FF 
openssl rsa -text -in $FF 
+0

लिखने के लिए छवि की "ग्राफएमएल" फ़ाइल (जिसे [yworks yed] (https://www.yworks.com/products/yed) के साथ संपादित किया जा सकता है) यहां पाया जा सकता है [यहां ] (https://s3-eu-west-1.amazonaws.com/lohlxadsvl/openssl_commands.graphml) –

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