निजी कुंजी लोड करने में असमर्थ। (पीईएम दिनचर्या: PEM_read_bio: नो स्टार्ट लाइन: pem_lib.c: 648: उम्मीद: कोई भी निजी कुंजी)


94

मेरे पास .key फ़ाइल है जो PEM स्वरूपित निजी कुंजी फ़ाइल है। मैंने यह फ़ाइल नहीं बनाई, लेकिन मुझे यह कहीं से मिली।

मैं इसके MD5 हैश को कमांड की तरह ओपनसेल टूल के साथ देखना चाहता था।

openssl rsa -in server.key -modulus -noout

लेकिन यह नीचे त्रुटि उत्पन्न करता है।

unable to load Private Key
13440:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:648:Expecting: ANY PRIVATE KEY

यहां .key फ़ाइल के कुछ asn1parse दिए गए हैं।

openssl asn1parse -in server.key
0:d=0  hl=4 l= 603 cons: SEQUENCE
4:d=1  hl=2 l=   1 prim: INTEGER           :00
7:d=1  hl=3 l= 129 prim: INTEGER           :C141201603899993919CBAA56985E9C7
C6A2AF713A02F5FE88D38CEFBED9304599689280B84B0AB577A9719CA20DDA1246A894AF397A2C57
EE5A582B036CC367E3667454DCD82DBDBF187C35FE39F61C71B517DDDF576F5471B4EC2E045E0F9D
619F5616C4E832F00CBD0DBF41B4BA3CBC4B4B603AE1FE61965917DA732E0DEF
139:d=1  hl=2 l=   3 prim: INTEGER           :010001
144:d=1  hl=3 l= 128 prim: INTEGER           :1687B9AE67562CEDEBDD7A531B84CDB7
093CE138519B93C34B7F626076FF0A262B16EA71904ACB6251A39307C04ADE202055BA13DD9F1539
6123EE408183361A9BC08B9413FA360EA928E48CC3F52B33ACF2980758F02BA2139F652F30A257C2
2E45D7C25835FC4D22B9ECECC12AB632318D4F47E1EBDAD9781B96BCFF03A2D1

 ...

क्या कुछ और है जो मैं कोशिश कर सकता हूं?


2
PEM फ़ाइल का सटीक शीर्ष लेख / पाद लेख क्या है? यदि आप किसी सार्वजनिक कुंजी में भेज रहे हैं, तो आप यह त्रुटि प्राप्त कर सकते हैं। इसके अलावा, आपके द्वारा सूचीबद्ध आदेश MD5 हैश नहीं देगा। यह कुंजी के मापांक देगा।
gtrig 21

मैंने scpविंडोज से उबंटू में फाइल कॉपी करने के लिए उपयोग किया था । इसे ठीक करने के लिए, मैंने उबंटू की फाइल को डिलीट कर दिया, वहां एक नई खाली फाइल बनाई और vimउसका इस्तेमाल किया और फिर सही कंटेंट में पेस्ट किया।
रयान

जवाबों:


73

नोटपैड ++ में कुंजी फ़ाइल खोलें और एन्कोडिंग को सत्यापित करें। यदि यह UTF-8-BOM कहता है तो इसे UTF-8 में बदल दें। फ़ाइल सहेजें और पुन: प्रयास करें।


2
अगर मैं एक मैक का उपयोग कर रहा हूँ तो क्या होगा?
अर्नेस्ट ज़मलेज़ीक

6
विजुअल स्टूडियो कोड का उपयोग करें - आप नीचे टूलबार का उपयोग करके आसानी से एन्कोडिंग को बदल सकते हैं!
लुका घेरसी

2
हे मेरे अच्छे भगवान! धन्यवाद! मैं कभी नहीं लगा होगा कि परीक्षण और त्रुटि से, मेरे लिए मुद्दा तय!
मिकेल डाइरेबोर्ग हेंसन

यह मेरे लिए था। धन्यवाद!
फ्रीमैन हेलमथ

4
GoDaddy एक BOM के साथ उपसम्बद्ध निजी कुंजी "जेनरेट-प्राइवेट-की.टेक्स्ट" का उत्पादन करता है, जो इस समस्या का कारण बनता है। कम से कम एक मैक पर, बिल्ली के साथ प्रमुख पाठ को डंप करना बीओएम को प्रदर्शित नहीं करता था, लेकिन इसे कम से देखा। मैंने BOMdit का उपयोग BOM को हटाने के लिए किया था, लेकिन कोई भी जो प्रारूप को बदल सकता है या पहले चार बाइट्स को काट देगा।
सेठ नोबल

55

मैंने PEM फ़ाइल के शीर्ष लेख और पाद लेख को बदल दिया है

-----BEGIN RSA PRIVATE KEY-----

तथा

-----END RSA PRIVATE KEY-----

अंत में, यह काम करता है!


1
आप -inform pemसमान परिणाम प्राप्त करने के लिए कमांड में भी जोड़ सकते हैं । जैसे openssl rsa -in server.key -modulus -noout -inform pem
साइमन वुडसाइड

1
चेक stackoverflow.com/questions/54994641/... अगर यह आपकी समस्या नहीं सुलझती
qstack

कुछ पहले से ही "खराब" प्रारूप (यानी अपरिवर्तित हेडर) के साथ सही तरीके से काम कर रहा है, इसलिए, यह एक अस्थायी समाधान है, कुछ को तोड़ने के लिए बाध्य है जो पहले से ही ठीक काम कर रहा था, जैसे, एक रिवर्स प्रॉक्सी जो मैन्युअल रूप से उन लोगों की कमी के लिए दुर्घटनाग्रस्त नहीं है हेडेड और पाद लेख। Yipes!
alejandrob

33

आपकी .key फ़ाइल में अवैध वर्ण हैं। आप इस तरह .key फ़ाइल की जाँच कर सकते हैं:

# file server.key

आउटपुट "server.key: UTF-8 यूनिकोड (BOM के साथ) पाठ" का अर्थ है कि यह एक सादा पाठ है, न कि एक महत्वपूर्ण फ़ाइल। सही आउटपुट "server.key: PEM RSA निजी कुंजी" होना चाहिए।

अवैध पात्रों को हटाने के लिए नीचे दिए गए आदेश का उपयोग करें:

# tail -c +4 server.key > new_server.key

New_server.key सही होनी चाहिए।

अधिक विवरण के लिए, आप यहां क्लिक कर सकते हैं , पोस्ट के लिए धन्यवाद।


1
file server.keyइस आदेश ने मुझे इस मुद्दे को प्राप्त करने में मदद की। धन्यवाद।
इसका हर्षद

लगता है कि टेल कमांड ने मेरी कुंजी फ़ाइल में अजीब प्रारूपण वर्ण जोड़े हैं। यकीन नहीं होता कि ऐसा क्यों होगा।
रैनवेबजैकसन

यह @tkpl उत्तर के साथ संयोजन में लगता है कि मेरे लिए त्रुटियों को समाप्त कर दिया है।
रयानवेबजैकसन

इससे मेरे कुछ घंटे और पूरे बाल बच गए।
फेलिप गुसमाओ


6
> I have a .key file which is PEM formatted private key file.
> ...
> Here's some asn1parse of the .key file...

यह ठीक asn1parseहै कि मुझे लगता है कि इसके पेम एन्कोडेड नहीं है


क्या कुछ और है जो मैं कोशिश कर सकता हूं?

क्योंकि यह ASN.1 प्रतीत होता है, कोशिश करें:

$ openssl rsa -in server.key -inform DER -modulus -noout

-inform DERएनकोडिंग के बीच स्विच करने के लिए सूचना ।


5

.Key फ़ाइल के प्रारंभ में कोई भी व्हाट्सएप निकालें।



2

मैं विंडोज 10 पर हूं और मैंने विंडोज 1252 एन्कोडिंग के साथ अपनी कुंजी को बचाया और यह मेरे लिए काम कर गया। एक अन्य StackOverflow प्रश्न पर कुछ लोग UTF-8 के साथ BOM के साथ इसे ठीक कर रहे थे ।

दूसरे शब्दों में, यह फ़ाइल एन्कोडिंग हो सकता है।


1

हो सकता है कि निजी कुंजी स्वयं फ़ाइल में मौजूद न हो। मुझे भी इसी समस्या का सामना करना पड़ रहा था, लेकिन समस्या यह है कि फ़ाइल में कोई निजी कुंजी मौजूद नहीं है।


1

यह तब हो सकता है जब आप अपनी निजी कुंजी के बजाय प्रमाणपत्र बनाने के लिए अपनी सार्वजनिक कुंजी का उपयोग करने का प्रयास कर रहे हों। आपको निजी कुंजी का उपयोग करना चाहिए


0

आज एक ही मुद्दा था, और यह देखा कि ऐसा तब होता है जब फ़ाइल का मालिक / समूह एक चल रहा ऐप नहीं होता है जो कुंजी पढ़ता है। शायद आपका मुद्दा भी है।


0

अन्य कोई भी उत्तर मेरे मामले में सही नहीं लगा, हालाँकि मुझे यहाँ वास्तविक उत्तर मिला

मेरी id_rsaफ़ाइल पहले से ही PEM प्रारूप में थी, मुझे .pemफ़ाइल नाम में एक्सटेंशन जोड़ने की आवश्यकता थी ।

करने के लिए धन्यवाद

openssl rsa -informपैरामीटर के संभावित विकल्प निम्न में से एक हैं:PEM DER

एक PEMएन्कोडेड फ़ाइल सादे-पाठ एन्कोडिंग की तरह है कि लगता है कुछ है:

-----BEGIN RSA PRIVATE KEY-----
MIGrAgEAAiEA0tlSKz5Iauj6ud3helAf5GguXeLUeFFTgHrpC3b2O20CAwEAAQIh
ALeEtAIzebCkC+bO+rwNFVORb0bA9xN2n5dyTw/Ba285AhEA9FFDtx4VAxMVB2GU
QfJ/2wIRANzuXKda/nRXIyRw1ArE2FcCECYhGKRXeYgFTl7ch7rTEckCEQDTMShw
8pL7M7DsTM7l3HXRAhAhIMYKQawc+Y7MNE4kQWYe
-----END RSA PRIVATE KEY-----

जबकि DERएक द्विआधारी एन्कोडिंग प्रारूप है।


0

हमारे मामले में क्या समस्या का कारण यह है कि जिस निजी कुंजी का हम उपयोग करने की कोशिश कर रहे थे, उसे पासफ़्रेज़ के साथ एन्क्रिप्ट किया गया था।

हमें निजी कुंजी का उपयोग करने ssh-keygen -pसे पहले डिक्रिप्ट कमांड लाइन टूल के साथ निजी कुंजी का उपयोग करना चाहिए।

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