एसएसएल: त्रुटि: 0B080074: x509 प्रमाणपत्र दिनचर्या: X509_check_pStreet_key: प्रमुख मूल्य बेमेल


99

मैं एसएसएल सेटअप करने में सक्षम नहीं हूं। मैंने गॉगल किया है और मुझे कुछ समाधान मिले लेकिन उनमें से किसी ने भी मेरे लिए काम नहीं किया। कृपया मुझे थोड़ी मदद की जरूरत है...

यहाँ वह त्रुटि है जो मुझे तब मिलती है जब मैं nginx को पुनः आरंभ करने का प्रयास करता हूं:

root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed

मेरा प्रमाणपत्र StartSSL से है और 1 वर्ष के लिए वैध है।

यहाँ मैंने परीक्षण किया है:

  • प्रमाणपत्र और निजी कुंजी में कोई स्थान नहीं है।
  • मैं डिफ़ॉल्ट server.key फ़ाइल का उपयोग नहीं कर रहा हूँ।
  • मैंने nginx.conf को चेक किया और निर्देश सही निजी कुंजी और प्रमाणपत्र की ओर इशारा कर रहे हैं।

मैंने मापांक भी जांचा, और मुझे कुंजी और प्रमाणपत्र दोनों के लिए एक अलग मापांक मिला।

आपके सहयोग के लिए धन्यवाद। :)

जवाबों:


36

मुझे कुंजी और प्रमाणपत्र दोनों के लिए अलग-अलग परिणामों के साथ एमडी 5 हैश मिला है।

यह सब कहते हैं। आपकी कुंजी और प्रमाणपत्र के बीच एक बेमेल संबंध है।

मापांक से मेल खाना चाहिए। सुनिश्चित करें कि आपके पास सही कुंजी है।


जब तक मैं कुछ याद नहीं कर रहा हूँ, आप बिल्कुल अलग होने के लिए सार्वजनिक और निजी कुंजी (प्रमाणपत्र फ़ाइल और कुंजी फ़ाइल) चाहते हैं।
मार्क बेरी

1
modulus' and the कुंजी और प्रमाणपत्र में सार्वजनिक प्रतिपादक 'भाग मेल खाना चाहिए। कोई शक नहीं कि फाइलें अलग हैं। कुंजी एक विशेष प्रमाणपत्र के लिए बनाई गई है।
dev0z

मेरी गलती। मुझे लगा कि वह फाइलों के एमडी 5 का जिक्र कर रहा है। अब मैं देख रहा हूं कि प्रमाणपत्रों का एक अलग मापांक कार्य होता है: यह कैसे पुष्टि करें कि आपके निजी कुंजी में मापांक आपके SSL / TLS प्रमाणपत्र की सार्वजनिक कुंजी में अधिष्ठापन से पहले मापांक से मेल खाता है?
मार्क बेरी

165

एक बार जब आप स्थापित कर लेते हैं कि वे मेल नहीं खाते हैं, तब भी आपको एक समस्या है - इसके बारे में क्या करना है। अक्सर, प्रमाणपत्र केवल गलत तरीके से इकट्ठा किया जा सकता है। जब कोई CA आपके प्रमाणपत्र पर हस्ताक्षर करता है, तो वे आपको एक ऐसा ब्लॉक भेजते हैं जो कुछ ऐसा दिखता है

-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----

वे आपको एक बंडल (अक्सर दो प्रमाण पत्र) भी भेजेंगे जो आपको प्रमाणपत्र देने के लिए उनके अधिकार का प्रतिनिधित्व करते हैं। यह कुछ इस तरह दिखेगा

-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----

इसके अलावा दुर्भाग्य से, वे इतने स्पष्ट रूप से लेबल नहीं किया जाएगा।

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

आप यह देखने के लिए परीक्षण कर सकते हैं कि प्रमाणपत्र क्या सोचता है कि यह चल रहा है

openssl x509 -noout -text -in yourcert.cert

शीर्ष के पास, आपको "विषय:" देखना चाहिए और फिर सामान जो आपके डेटा की तरह दिखता है। यदि इसके बजाय यह आपके CA की तरह दिखता है, तो आपका बंडल संभवतः गलत क्रम में है; आप एक बैकअप बनाने की कोशिश कर सकते हैं, और फिर अंतिम प्रमाण को शुरुआत में ले जा सकते हैं, उम्मीद करते हैं कि वह वही है जो आपका प्रमाणपत्र है।

यदि यह काम नहीं करता है, तो आपको बस फिर से प्रमाण पत्र प्राप्त करना होगा। जब मैं CSR बनाता हूं, तो मैं स्पष्ट रूप से यह बताना चाहता हूं कि यह किस सर्वर के लिए है (सिर्फ ssl.key या server.key के बजाय) और इसे नाम की तारीख के साथ कॉपी करें, जैसे mydomain.20150306.key आदि। वे निजी और सार्वजनिक कुंजी जोड़े को एक और सेट के साथ मिश्रित होने की संभावना नहीं है।


1
यह यह मेरे लिए Nginx पर तय किया!
टीटीटी

24
यह दिखाने के लिए विशाल +1 कि प्रमाणित श्रृंखला में क्या है।
cbednarski

निश्चित रूप से उपयोगी है, मैं एक घंटे यह समझने की कोशिश में बिताता हूं कि
नगनेक्स

3
ठीक है, इसने मेरे लिए कोमोडो सर्टिफिकेट और नगीक्स के साथ भी काम किया। बस अंतिम प्रमाणपत्र ब्लॉक को शीर्ष पर धकेल दिया। इस मुद्दे पर विस्तृत विवरण और अंतर्दृष्टि के लिए Thx।
एंडी डी

1
यह मुझे मदद करता है! बहुत उपयोगी जवाब! आपको बहुत - बहुत धन्यवाद!
ओलेग क्लिमेंको

70
  1. सुनिश्चित करें कि आपका प्रमाणपत्र और कुंजी PEM प्रारूप हैं। यदि नहीं तो उन्हें ओपनस् कमांड का उपयोग करके परिवर्तित करें
  2. सार्वजनिक कुंजी के MD5 हैश की जाँच करें ताकि यह सुनिश्चित हो सके कि यह एक निजी कुंजी में है

    openssl x509 -noout -modulus -in certificate.crt | openssl md5
    openssl rsa -noout -modulus -in privateKey.key | openssl md5
    

7
अच्छी सलाह ! भले ही, अभी भी वही त्रुटि मिलती है, भले ही md5 हैश मेरे लिए एक ही हो ^ ^
डेल्फिन

4
हैश को सत्यापित करने के तरीके के लिए धन्यवाद। मुझे पता चला कि मेरे पास कॉपी पेस्ट त्रुटि थी, और मेरे पेम की शुरुआत से एक भी डैश गायब था। आपने मुझे बहुत सारे सिरदर्द से बचा लिया। चीयर्स।
जस्टिन फोर्टियर

38

मुझे यह समस्या थी क्योंकि मैं गलत क्रम में बंडल और प्रमाण पत्र जोड़ रहा था ताकि शायद यह किसी और की मदद कर सके।

पहले (जो गलत है):

cat ca_bundle.crt certificate.crt > bundle_chained.crt

बाद में (जो सही है)

cat certificate.crt ca_bundle.crt > bundle_chained.crt

और कृपया उपयुक्त मान (ssl_certificate को अब जंजीर crt की ओर इंगित करना चाहिए) को अपडेट करना न भूलें

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     bundle_chained.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

से nginx मैनपेज :

यदि सर्वर प्रमाणपत्र और बंडल गलत क्रम में समाहित किया गया है, तो nginx प्रारंभ करने में विफल रहेगा और त्रुटि को प्रदर्शित करेगा:

SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed
   (SSL: error:0B080074:x509 certificate routines:
    X509_check_private_key:key values mismatch)

3
यह वास्तव में स्वीकार किए गए प्रश्न की तुलना में उस प्रश्न का बेहतर उत्तर है।
बाल्ड्र्स

9

यदि ऐसा होता है और आप लेट्स एनक्रिप्ट / सर्टिफिकेट का उपयोग कर रहे हैं, तो इसका कारण यह है कि आपने chain.pemइसके बजाय सबसे अधिक उपयोग किया है fullchain.pem

यह कुछ इस तरह होना चाहिए:

ssl_certificate /etc/certbot/live/example.com/fullchain.pem;
ssl_certificate_key /etc/certbot/live/example.com/privkey.pem;

सर्टिफिकेट डॉक्स देखें "मेरे प्रमाण पत्र कहां हैं?"


या बंडल में सीरेट्स का क्रम गलत है: पहले Letencrypt, फिर खुद का सर्टिफिकेट।
15

5

मुझे भी यही समस्या थी और आखिरकार सर्टिफिकेट फाइल में पेम ब्लॉक का क्रम बदलकर इसे हल कर दिया।

प्रमाणित ब्लॉक को फ़ाइल की शुरुआत में, फिर मध्यवर्ती ब्लॉक, फिर रूट ब्लॉक में रखा जाना चाहिए।

मैंने एक समस्याग्रस्त प्रमाण पत्र फ़ाइल की एक कामकाजी प्रमाण पत्र फ़ाइल के साथ तुलना करके इस समस्या का एहसास किया।


1

इस मुद्दे पर मेरे 5 सेंट:

मुझे भी यही समस्या थी। लगभग 1 घंटे इसकी देखभाल करने के बाद, मैंने पाया कि मैंने प्रमाणपत्र को गलत तरीके से चिपकाया है।

यदि आपके पास इस तरह की त्रुटि है, तो कृपया अपना प्रमाण पत्र देखें।


1

मेरे मामले में मैं एसएसएल प्रमाणपत्र बदलना चाहता हूं, क्योंकि मैंने अपना सर्वर बदल दिया है, इसलिए मुझे इस आदेश के साथ एक नया सीएसआर बनाना था:

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

मैंने कंपनी एसएसएल प्रदाता को mysite.csr फ़ाइल भेजी है और मुझे प्रमाणपत्र crt प्राप्त होने के बाद और फिर मैंने nginx को पुनरारंभ किया है, और मुझे यह त्रुटि मिली है

 (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)

बहुत जांच के बाद, त्रुटि यह थी कि कुंजी फ़ाइल से मॉड्यूल crt फ़ाइल से एक के साथ समान नहीं था

इसलिए, इसे काम करने के लिए, मैंने एक नई सीएसआर फाइल बनाई है, लेकिन मुझे इस कमांड के साथ फाइल का नाम बदलना होगा

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

तब मुझे कंपनी प्रदाता से एक नई crt फ़ाइल मिली थी, nginx को पुनरारंभ करें और यह काम किया।


0

यह तब भी हो सकता है जब आपका सीए एक मध्यवर्ती प्रमाणपत्र जारी करता है

मैं इस मुद्दे पर (दो बार) नगनेक्स के साथ भाग गया और इस पोस्ट में किसी भी समाधान ने इस मुद्दे को नहीं समझाया। मार्को नाम के एक अच्छे सज्जन द्वारा यहां ब्लॉग पोस्ट ने इसे नामांकित किया, और मैं इसे यहां किसी ऐसे व्यक्ति के लिए पेस्ट कर रहा हूं जो मुझे देख रहा था। https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff

मेरे मामले में, गो-डैडी सीए थे और यह विशिष्ट है कि वे कैसे प्रमाण पत्र और मध्यवर्ती प्रमाणपत्र बंडल जारी करते हैं।

यहाँ मार्को के ब्लॉग पोस्ट के कुछ अंश दिए गए हैं

Nginx के साथ, यदि आपके CA में एक मध्यवर्ती प्रमाणपत्र शामिल है, तो आपको एक एकल जंजीर प्रमाणपत्र फ़ाइल बनानी होगी जिसमें आपका प्रमाणपत्र और CA का मध्यवर्ती प्रमाणपत्र शामिल हों।

आप इस कमांड का उपयोग एक संयुक्त फाइल बनाने के लिए कर सकते हैं, जिसका नाम example.com है।

cat example.com.crt intermediate.crt > example.com.chained.crt


0

Im मेरा मामला समस्या यह थी कि मैं cli इंटरफ़ेस में किसी भी डेटा को दर्ज किए बिना सीरटेड को क्रेट करता हूं। जब मैंने सभी क्षेत्रों को पुनर्जीवित किया और सभी क्षेत्रों: शहर, राज्य, आदि को ठीक किया।

 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

0

यह मेरे साथ तब हुआ जब मैंने बंडल.आर्ट और मुख्य प्रमाणपत्र को संयुक्त किया। इसका कारण था कि मैंने बंडल के नीचे मुख्य प्रमाणपत्र कॉपी किया था। होना तो इसका उलटा चाहिए

1 / मुख्य प्रमाण 2 / बंडल.आर्ट


0

Nginx के लिए:

  1. openssl req -newkey rsa:2048 -nodes -keyout domain.com.key -out domain.com.csr

  2. एसएसएल फाइल domain_com.crtऔर domain_com.ca-bundleफाइलें, फिर पेस्ट में नई फाइल कॉपी करें domain.com.chained.crt

3: nginx फ़ाइलें जोड़ें:

  1. ssl_certificate /home/user/domain_ssl/domain.com.chained.crt;
  2. ssl_certificate_key /home/user/domain_ssl/domain.com.key;

लेट्स ने नेग्नेक्स को फिर से शुरू किया।


0

SL_CTX_use_PStreetKey ("/ etc / nginx / ssl / फ़ाइल") विफल (SSL: त्रुटि: 0B080074: x509 प्रमाणपत्र दिनचर्या: X509_check_pStreet_key: प्रमुख मूल्य बेमेल)

यह त्रुटि तब हो सकती है, जब प्रमाणपत्र निजी कुंजी ( ssl_certificate_keyजैसे, .keyया .pemफ़ाइल) ssl_certificateआपके Nginx कॉन्फ़िगरेशन (चेक nginx.confया इन sites-enabled/) में सार्वजनिक प्रमाणपत्र फ़ाइल ( ) से मेल नहीं खाती । सुनिश्चित करें कि दोनों फाइलें मेल खा रही हैं।

आगे विवरण के लिए Nginx त्रुटि लॉग की जाँच करें (जैसे /var/log/nginx/error.log)।


0

मेरे मामले में मुझे अपने डोमेन के समारोहों को संक्षिप्त करना होगा।

cat myDomain.crt EntityCertCA.crt TrustedRoot.crt > bundle.crt

और config फाइल /etc/nginx/nginx.conf में

 ssl_certificate "/etc/pki/nginx/bundle.crt";

सेवा को पुनरारंभ करें और ठीक है।

systemctl restart nginx.service

स्रोत चरण 2: https://www.namecheap.com/support/knowledgebase/article.aspx/9781/2238/nginx-ssl-error0b080074x509-certificate-routines-x509checkprivatekeykey-values-mismatch

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