निजी कुंजी को RSA निजी कुंजी में कैसे बदलें?


97

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

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

जब मैं server.key फ़ाइल खोलता हूं, तो मैं देखता हूं कि यह "----- BEGIN PRIVATE KEY -----" से शुरू होता है

मैं अपने सर्वर पर एसएसएल सर्टिफिकेट का उपयोग करता हूं और सब कुछ ठीक लग रहा है।

अब मैं उसी प्रमाणपत्र को AWS IAM पर अपलोड करना चाहता हूं ताकि मैं इसका उपयोग beanstalk लोड बैलेंसर के लिए कर सकूं। मैं इस aws doc से निम्न कमांड का उपयोग करता हूं dd 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 विकृत सूचनापत्र अमान्य निजी कुंजी।"

दिलचस्प बात यह है कि aws doc पेज पर, नमूना निजी कुंजी जिसे वे दिखाते हैं "------- आरएसए निजी कुंजी शुरू करें --------"

क्या OpenSl का उपयोग करके मेरी निजी कुंजी को RSA निजी कुंजी में बदलने का कोई तरीका है?

जवाबों:


155

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

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

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

openssl pkcs8 -topk8 -nocrypt -in privkey.pem

1
यह Invalid PEM structure, '-----BEGIN...' missing.साइबरडॉक जैसे टूल से अजीब त्रुटि संदेश प्राप्त करने का भी समाधान है , जबकि एक ही कुंजी के साथ शुद्ध एसएसएच काम कर रहा है।
डैनियल

1
धन्यवाद! मैं इसे प्राप्त कर रहा था A client error (MalformedCertificate) occurred when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.और अपनी निजी कुंजी पर इसे चला रहा था !
फिल्पेरो

4
संदर्भ के लिए: अधिक संपूर्ण स्पष्टीकरण के लिए stackoverflow.com/q/20065304/53974 देखें ।
१२:४ade बजे ब्लेज़ोरब्लेड

1
हम इसके विपरीत कैसे करते हैं? मुझे एक Private Keyसे चाहिए RSA Private Key?
edthethird

1
openssl pkcs8 -topk8 -nocrypt -in privkey.pemपीकेसीएस 8 को STDOUT में लिखेंगे
पॉल केहर

24

यह कुछ मदद का हो सकता है (कमांडों में बैकस्लैश को शब्दशः लिखना नहीं है, वे संकेत देने के लिए हैं कि "सब कुछ एक पंक्ति में होना चाहिए"):

कब कौन सी कमांड लागू करें

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

यहां आसान प्रतिलिपि-चिपकाने के लिए फिर से आदेश दिए गए हैं:

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

1
छवि की "ग्राफमिल" फाइल (जिसे उदाहरण के लिए yworks के साथ संपादित किया जा सकता है) यहाँ
डेविड टोनहोफर

8

"BEGIN OPENSSH निजी कुंजी" "BEGIN RSA निजी कुंजी" में कनवर्ट करें

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

मुझे ठीक इसी की आवश्यकता थी। धन्यवाद!
रॉसडी

यह व्यवहार अप्रत्यक्ष रूप से ssh-keygen मैनपेज पर प्रलेखित है, लेकिन -m ध्वज का उपयोग वास्तव में -i और -o
ikrabbe
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.