एसएसएल त्रुटि - फ़ाइल से सर्वर प्रमाणपत्र पढ़ने में असमर्थ


37

मैं आज अपने डोमेन के लिए एसएसएल की स्थापना कर रहा हूं, और एक और मुद्दा मारा है - मुझे उम्मीद थी कि कोई व्यक्ति कुछ प्रकाश को बहा सकता है।

मुझे निम्नलिखित त्रुटि संदेश प्राप्त होते रहते हैं:

[त्रुटि] Init: फ़ाइल /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt से सर्वर प्रमाणपत्र पढ़ने में असमर्थ
[त्रुटि] एसएसएल लाइब्रेरी त्रुटि: 218529960 त्रुटि: 0D0680A8: asn1 एन्कोडिंग रूटीन: ASN1_CHECK_TLEN: गलत टैग
[त्रुटि] एसएसएल लाइब्रेरी त्रुटि: 218595386 त्रुटि: 0D07803A: asn1 एन्कोडिंग रूटीन: ASN1_ITEM_EX_D2I: नेस्टेड asn1 त्रुटि

मैं Apache 2.2.16 और Ubuntu 10.10 चला रहा हूं। मेरी .crt फ़ाइल में आरंभ और समाप्ति टैग हैं, और मुझे प्राप्त होने वाले पुष्टिकरण ईमेल से बिल्कुल कॉपी किया गया है, बहुत निराशा होती है!

चीयर्स!

संपादित करें >> जब सत्यापित करने की कोशिश कर रहे हैं। यह काम नहीं करता है:

>> OpenSl x509 -noout -text -in domain.com.crt 
प्रमाणपत्र लोड करने में असमर्थ
16851: त्रुटि: 0906D06C: पीईएम दिनचर्या: PEM_read_bio: कोई प्रारंभ पंक्ति: pem_lib.c: 650: उम्मीद: प्रमाणित प्रमाण पत्र

साथ ही >>

>> खुलता है x509 -text -inform PEM -in domain.com.crt
प्रमाणपत्र लोड करने में असमर्थ
21321: त्रुटि: 0906D06C: पीईएम दिनचर्या: PEM_read_bio: कोई प्रारंभ पंक्ति: pem_lib.c: 650: उम्मीद: प्रमाणित प्रमाण पत्र
>> OpenSl x509 -टेक्स्ट-इनफॉर्म DER -in domain.com.crt
प्रमाणपत्र लोड करने में असमर्थ
21325: त्रुटि: 0D0680A8: asn1 एन्कोडिंग रूटीन: ASN1_CHECK_TLEN: गलत टैग: tasn_dec.c: 1316:
21325: त्रुटि: 0D07803A: asn1 एन्कोडिंग रूटीन: ASN1_ITEM_EX_D2I: नेस्टेड asn1 त्रुटि: tasn_dec.c: 380: टाइप करें = X509

संपादित करें >> (रास्ते में मदद के लिए चीयर्स)

>> grep '^ -----' domain.com.crt
----- BEGIN CERTIFICATE -----
----- END प्रमाण पत्र -----

बस सर्टिफिकेट प्रदान करने वाली कंपनी को ईमेल किया, उन्होंने जवाब दिया>

मैंने आपके द्वारा प्रदान की गई CSR फ़ाइल की जाँच की है और मैं आश्वस्त कर सकता हूँ कि यह सही तरीके से उत्पन्न हुई थी। वर्तमान में आपके द्वारा की जा रही त्रुटि का कारण है क्योंकि आप CSR को स्थापित करने के लिए गलत कमांड लाइन का उपयोग कर रहे हैं। आपको अपने डोमेन के अनुसार अपने कमांड लाइन से इस domain.com.crt को संशोधित करना होगा।

  • वर्तमान में crt को mysite.com.crt पर सेट किया गया है - मैंने एक उदाहरण के रूप में domain.com.crt का उपयोग किया है

क्या आप कृपया हमें इसका उत्पादन दिखा सकते हैं grep '^-----' domain.com.crt?
क्वांटा

विलियमसन, एक प्रमाण पत्र के पूरे बिंदु को किसी को भी दिखाया जाना है जो आपके वेबसर्वर से जुड़ता है; यह कोई निजी बात नहीं है। यह देखते हुए, क्या आप पूरे प्रमाण पत्र को यहां संलग्न करने या पोस्ट करने पर विचार करेंगे ताकि हम अनुमान लगाने के बजाय सीधे इसे देख सकें?
MadHatter

रुको, मैं देख रहा हूं कि आपने मेरा उत्तर स्वीकार कर लिया है। क्या इसका मतलब यह है कि यह टर्मिनल विंडोज लाइनफीड था जो समस्या पैदा कर रहे थे?
MadHatter

MadHatter - माफी! यह करने के लिए नया है, लेकिन मैं सिर्फ यह काम कर रहा हूँ, मुझे प्राप्त ईमेल से स्वरूपण बंद था, आप लोगों को पर्याप्त धन्यवाद नहीं दे सका!
विलियम्सोवेन

जवाबों:


49

क्या यह संभव है कि लाइनें ^ एम-टर्मिनेटेड हैं? यह एक संभावित मुद्दा है जब विंडोज से फाइल को UNIX सिस्टम में स्थानांतरित किया जा रहा है। चेक करने का एक आसान तरीका vi"मुझे बाइनरी दिखाएं" मोड में उपयोग करना है vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt

यदि प्रत्येक पंक्ति एक नियंत्रण-एम के साथ समाप्त होती है, तो इस तरह

-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M

आपको विंडोज लाइन-टर्मिनेटेड प्रारूप में एक फाइल मिली है, और अपाचे उन लोगों से प्यार नहीं करता है।

आपके विकल्पों में फ़ाइल को फिर से स्थानांतरित करना, अधिक देखभाल करना शामिल है; या dos2unixउन लोगों को बाहर निकालने के लिए कमांड का उपयोग करना; यदि आप सावधान रहें तो आप उन्हें vi के अंदर भी निकाल सकते हैं।


संपादित करें : @ dave_thompson_085 के लिए धन्यवाद, जो बताते हैं कि यह उत्तर अब 2019 में लागू नहीं होगा। अर्थात्, अपाचे / ओपनएसएसएल अब ^ एम-समाप्त लाइनों के सहिष्णु हैं, इसलिए वे समस्या का कारण नहीं बनते हैं। उस ने कहा, अन्य स्वरूपण त्रुटियां, जिनमें से कई अलग-अलग उदाहरण टिप्पणियों में दिखाई देते हैं, अभी भी समस्याएं पैदा कर सकते हैं; अगर प्रमाणपत्र को सिस्टम में ले जाया गया है, तो उसके लिए सावधानी से जांच करें।


मेरे लिए यह एक कॉपी और पेस्ट त्रुटि थी, हेडर के पात्रों के पहले जोड़े को छोड़ कर -----BE... डबल चेक करने की प्रेरणा के लिए धन्यवाद!
cfi

धन्यवाद, यह मेरी समस्या थी! नोटपैड ++ में विंडोज़ में आप सही LF प्रारूप सेट करने के लिए EDIT-EOL रूपांतरण संवाद का उपयोग कर सकते हैं। और आप वास्तव में विंडोज़ सीआर एलएफ लाइन एंडिंग देखने के लिए व्यू-शो सिंबल मेनू का उपयोग कर सकते हैं।
ब्योर्न

1
मेरा प्रमाण पत्र बस एक खाली फाइल होने के नाते समाप्त हो गया। मुझे लगता है कि पीढ़ी में कुछ टूट गया। इस जवाब ने मुझे इसे खोलने और देखने के लिए प्रोत्साहित किया।
फ़्लिकरफ़िल्टर

विंडोज उपयोगकर्ताओं पर ध्यान दें: आपको लाइन प्रारूप को UNIX में बदलने की आवश्यकता होगी, भले ही आप विंडोज पर हों। DOS2UNIX एक विंडोज कमांड नहीं है, लेकिन एक लिनक्स है। अच्छी खबर, विंडोज के लिए Git इसे प्रदान करता है। CigWin शायद भी करता है, लेकिन इसके बारे में निश्चित नहीं है।
इग्नासियो सेगुरा

विंडोज उपयोगकर्ताओं पर ध्यान दें: विंडोज एक्सप्लोरर के गुणों / सुरक्षा टैब में अनुमतियों की एक सूची साइगविन के सीपीपी के साथ एक नेटवर्क साझा से प्रतिबंधित-अनुमति फ़ाइल की प्रतिलिपि बनाने के बाद गड़बड़ हो जाती है। उदाहरण के लिए, मैंने एक "NUL SID" देखा, एक विकलांग और डोमेन उपयोगकर्ता प्रविष्टियाँ।
eel ghEEz

19

प्रमाणपत्र साइनिंग रिक्वेस्ट (सीएसआर) (ध्यान दें कि ओपी एक प्रमाणपत्र पढ़ रहा है) पढ़ने की कोशिश करते समय इस तरह की त्रुटि वाले इस पृष्ठ पर पहुंचने वाले किसी भी व्यक्ति के लिए: सही ओपनएसएसएल कमांड का उपयोग करना सुनिश्चित करें। x509प्रमाणपत्र के लिए है और reqसीएसआर के लिए है:

openssl req -in server.csr -text -noout

बनाम

openssl x509 -in server.crt -text -noout

17

बस इस पर हलकों में गोल और गोल हो गया, और यह निकला कि मेरे पास गलत तरीके से प्रमाण पत्र थे - जैसे

SSLCertificateFile    /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt

के बजाय:

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

यह जाँचने के लिए कि क्या आपको यह त्रुटि मिल रही है।


11
>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

मुझे संदेह है कि आपको प्रमाण पत्र के प्रारूप में कोई समस्या है।

निम्नलिखित दो आदेशों को चलाएं और हमें आउटपुट दें:

openssl x509 -text -inform DER -in domain.com.crt 
openssl x509 -text -inform PEM -in domain.com.crt 

इस उत्तर के लिए धन्यवाद। मैं अपने SAs को ".cer" के रूप में प्रदान किए गए प्रारूप को निर्धारित करने में सक्षम था "
.pem

10

मेरे मामले में, मैंने पाया कि मेरे प्रमाणपत्र में "-" अक्षर अलग थे। रास्ते में एक विशेष यूनिकोड चरित्र के साथ - पाठ के संपादक के साथ सर्वर पर प्रमाण पत्र रखने वाले व्यवस्थापक से कॉपी / पेस्ट मुद्दा होना चाहिए।

यह निदान करने में घंटों लग गए, और अंत में मैंने बस इस पर अनुमान लगाया, और vi में प्रमाण पत्र को संपादित किया और मौजूदा "-" वर्णों को हटा दिया, और उन्हें फिर से निकाल दिया।

आशा है कि यह किसी की मदद करता है।


8

मेरे मामले में, मुझे ओपी की त्रुटियों का सामना करना पड़ा क्योंकि जिसने भी पहली बार मेरे लिए .crt फ़ाइल बनाई थी, उसने वास्तव में एक .PEM स्वरूपित फ़ाइल बनाई थी , और उसने इसका नाम .crt रखा।

मैंने इसे निम्न सहायक गाइड में चलाकर खोजा: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certports-and-how करने वाली परिवर्तित-उन्हें

मुझे बस इतना करना था कि मेरा .crt का नाम बदलकर .pem, और मैं कर दिया गया था! गाइड ने संकेत दिया कि ओपी के प्रश्न से त्रुटियां स्पष्ट होती हैं कि इनपुट फ़ाइल पहले से ही PEM स्वरूपित है, इसलिए इसे .ER को DER प्रारूप से परिवर्तित करने का प्रयास नहीं किया जा सकता है, और यह वास्तव में अनावश्यक है।


4

सुनिश्चित करें कि आपकी फ़ाइल में प्रमाणपत्र फ़ाइल के भीतर कोई अनुगामी या अग्रणी स्थान नहीं है। ध्यान से सुनिश्चित करें कि आपके प्रमाणपत्र फ़ाइल के भीतर कोई रिक्त स्थान या रिक्त स्थान नहीं हैं, संपूर्ण पाठ का चयन करके और केवल पाठ पर रिक्त स्थान की तलाश में संपादक।

यह भी जांचें कि क्या वास्तव में सभी कॉन्फ़िगर की गई फाइलें मौजूद हैं और सही हैं।

उदा: आपके अन्य पोस्ट पर आप कहते हैं कि आपकी .key फ़ाइल का नाम my domain.com.crt है, जबकि vhost कॉन्फ़िगरेशन पर आपके पास domain.com.crt है

SSLCertificateFile /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
SSLCertificateKeyFile /etc/apache2/domain.ssl/domain.ssl.key/domain.com.key
SSLCertificateChainFile /etc/apache2/domain.ssl/ca.crt
SSLCACertificateFile /etc/apache2/domain.ssl/gs_intermediate_ca.crt

फिर से जांचें कि उपरोक्त सभी फाइलें वास्तव में मौजूद हैं और मान्य हैं।


1
यह भी जांच लें कि आपके डैश डैश हैं। परिवर्तन करने के लिए की तरह Microsoftian पाठ संपादक --में ; कि समस्या निवारण के लिए बहुत मज़ा नहीं था।
शेन झुंझलाना

हां, जब से आप उबंटू में हैं, बस एक टर्मिनल खोलें और उदाहरण के लिए नैनो का उपयोग करें। इस तरह आपको यकीन हो जाएगा।
बजे जॉर्ज तासीओलिस

नमस्ते, आपके फ़ीड वापस के लिए धन्यवाद - मैंने सब कुछ जाँच लिया है और सब अच्छा है। मैं crt फ़ाइल को सत्यापित करने की कोशिश कर रहा हूँ लेकिन मुझे यह मिल गया है:sudo openssl x509 -noout -text -in domain.com.crt unable to load certificate 16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE
williamsowen

1
क्या आपके domain.com.crt फ़ाइल की पहली पंक्ति शुरू होती है -----BEGIN CERTIFICATE-----और अंतिम पंक्ति किसके साथ समाप्त होती है -----END CERTIFICATE-----?
जॉर्ज टासौलिस

1

क्या किसी और को इस समस्या में भाग लेना चाहिए और आपके अपाचे त्रुटि लॉग कुछ इस तरह कहते हैं:

Init: फ़ाइल /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt से सर्वर प्रमाणपत्र पढ़ने में असमर्थ

सुनिश्चित करें कि आपने अपाचे विन्यास में घोषणाओं में अपनी कुंजी और प्रमाणपत्र फ़ाइलों को स्वैप नहीं किया है। मैंने अपनी प्रमाणपत्र फ़ाइल की कुंजी और मेरी कुंजी फ़ाइल को प्रमाणपत्र को इंगित किया था। इस पोस्ट ने मुझे समस्या का पता लगाने में मदद की, लेकिन मैं इसे एक अन्य संभावित समस्या / समाधान के रूप में इंगित करना चाहता था।


0

मेरी समस्या (Apache 2.4 के साथ एक नया सर्वर स्थापित करते समय एक ही त्रुटि रही) यह था कि Apache (2.4) बाइनरी .crt फ़ाइल को नहीं पढ़ सका। मैंने इसे अपने व्यक्तिगत प्रमाण पत्र स्टोर (एमएमसी के साथ) में आयात किया और इसे बेस -64 एनकोडेड एक्स 509 (इनसर) के रूप में निर्यात किया। एक ही नाम (.crt) को निर्यात की गई फ़ाइल का नाम दिया (मेरे httpd-ssl.conf में प्रयुक्त) और यह फिर से काम किया! वही प्रमाण पत्र मेरे पुराने सर्वर पर काम करता है, शायद Apache 2.4 अधिक कठोर है फिर 2.2? सौभाग्य।


0

मेरे मामले में, इसका बीओएम के साथ फाइल में मौजूद होना है। कोई इसे ऐसे ही उतार सकता है:

tail -c +4 ssl.crt > ssl2.crt

सुनिश्चित नहीं है कि यह हमेशा 3 बाइट्स लेता है, इसलिए बेहतर तरीका होना चाहिए:

vi -c 'se nobomb' -c wq ssl.crt

0

मुझे वही त्रुटि मिली क्योंकि मैंने .crt फ़ाइलनाम के साथ .key को स्विच किया था


0

जब मैं गलती से एक ग्राहक-आपूर्ति की गई p7b टाइप IIS सर्टिफिकेट का उपयोग अपाचे कॉन्फिगरेशन में करता था तो मुझे भी ऐसी ही समस्या थी। प्रमाणपत्र को x509 प्रारूप में बदलने से त्रुटि ठीक हो गई। दोनों प्रकार सतह पर समान दिखते हैं लेकिन अंदर की तरफ अलग-अलग होते हैं।


0

मुझे यह समस्या थी क्योंकि मुझे एक ईमेल में चिपकाए गए IIS- .p7b फ़ाइल की सामग्री भेजी गई थी। इसमें "----- BEGIN CERTIFICATE -----" और "----- END CERTIFICATE -----" है, बस .pem की तरह, और सामग्री एक समान दिखने वाले बेस 64 एनकोडिंग का उपयोग करती है। मैंने इसे * .pem फ़ाइल में बदल दिया जैसे:

openssl pkcs7 -print_certs -in cert.p7b -out cert.cer

उसके बाद, Apache 2.2 खुश थी।


0

मैंने हाल ही में विंडोज पर Lets Encrypt (letencrypt) का उपयोग करके यह समस्या रखी थी। प्रमाणपत्र UTF-16LE के रूप में एन्कोड किया गया था। इसे UTF-8 (dos2unix का उपयोग करके) में परिवर्तित करने से समस्या हल हो गई।


0

मेरे मामले में सिर्फ खाली लाइनें थीं। जब मैंने ntepad या notepad ++ से crt फाइल को नैनो में पेस्ट किया तो हमेशा smth जैसा हो गया

sdgrgrgr rgregegreg rgrgreg
rgregreg rggregregr rgregrg

खाली स्थानों को हटाने और एक लाइन में सभी पुट समस्या हल हो गई जैसे:

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