Nginx स्टार्टअप ssl को ऐसी किसी फ़ाइल या निर्देशिका में विफल नहीं करता है


14

यहाँ त्रुटि मुझे मिल रही है:

पुन: लोड कर रहा है nginx कॉन्फ़िगरेशन: nginx: [emerg] SSL_CTX_use_certificate_chain_file ("/ path / to / cert.pem") विफल हुआ (SSL: त्रुटि: 02001002) सिस्टम लाइब्रेरी: fopen: ऐसी कोई फ़ाइल या निर्देशिका त्रुटि: 20074002: BIO दिनचर्या: FILE_CTRL सिस्टम आवश्यक त्रुटि: 140DC002: SSL रूटीन: SSL_CTX_use_certificate_chain_file: system lib) nginx: कॉन्फ़िगरेशन फ़ाइल /etc/nginx/nginx.conf परीक्षण विफल

मुझे 100% यकीन है कि फ़ाइल उस स्थान पर है, लेकिन Nginx को लगता है कि यह वहां नहीं है। मैंने उस क्रम में domain.crtऔर intermediate.crtमैन्युअल रूप से विलय कर दिया । मैं पूरे एक दिन इस पर अपना सिर खुजला रहा हूं। मुझे आशा है कि किसी ने इस त्रुटि को देखा है और इसका एक समाधान है। (और ध्यान दें कि यह चिपकाने में कोई त्रुटि नहीं है कि फ़ाइल स्थान केवल एक बार दिखाया गया है और 'ऐसी कोई फ़ाइल या निर्देशिका' के बाद दोबारा नहीं)।


3
path/to/cert.pemनिश्चित रूप से एक वैध स्थान नहीं है।
माइकल हैम्पटन

आप यह मानने के लिए सही हैं कि वास्तविक पथ नहीं है। हालाँकि मैं आसानी से उस स्थान का वैध हिस्सा बना सकता था। लेकिन जिस तरह से कंपनी के लिए ऐसा किया जा रहा है, उस तरह से मैं आपको बारीकियां प्रदान करने में असमर्थ हूं। मुझे उपयोगकर्ता नाम छोड़ना होगा।
tgoza

जवाबों:


15

क्या आप सुनिश्चित हैं कि Nginx उपयोगकर्ता की निर्देशिका तक पहुँच है?

.pemफ़ाइल की अनुमतियों की भी जाँच करें , यदि Nginx इसे एक्सेस नहीं कर सकता है, तो यह दिखा सकता है 'no such file or directory'

यदि अनुमतियाँ सही हैं, तो आप फिर से वास्तविक पथ की जाँच कर सकते हैं। आपने इसे कैसे चिपकाया (जो मुझे पता है कि आपने डायर को हटा दिया है) कोई शुरुआत नहीं है /जो समस्या हो सकती है।

संपादित करें

अपने एसएसएल सेटअप को निम्न संरचना में स्थानांतरित करने का प्रयास करें (साथ ही nginx.confप्रतिबिंबित करने के लिए बदलें ):

sudo mkdir /etc/nginx/ssl
sudo chown -R root:root /etc/nginx/ssl
sudo chmod -R 600 /etc/nginx/ssl

Nginx आपके लिए विफल हो सकता है .pemक्योंकि अनुमतियाँ बहुत खुली हैं (यह सुनिश्चित करने के लिए स्रोत की आवश्यकता है कि Nginx ऐसा करता है) लेकिन उपरोक्त सेटअप ठीक काम करना चाहिए।


मैंने पथ की दोहरी जाँच की और इसमें /शुरुआत में ही शामिल है इसलिए मैंने इस प्रश्न को प्रतिबिंबित करने के लिए बदल दिया। फ़ाइल में स्थित है /home/user/subdirsऔर फ़ाइल और निर्देशिका अनुमतियों के सभी user.www-data (username.group नाम) और 775 सेट के स्वामित्व में हैं। और मुझे लगता है कि nginx के पास www-data के स्वामित्व वाली किसी भी चीज़ की पहुंच है, हालांकि मुझसे गलती हो सकती है।
tgoza

हमेशा सरल गलतियां जो हमेशा पता लगाने के लिए लेती हैं :) खुशी है कि आप इसे काम कर रहे हैं।
जिम डब्ल्यू।

यह वास्तव में कैसा लगा? मेरे पास मेरा है $root/keys/तो मेरी सर्टिफिकेट लाइन दिखती है ssl_certificate keys/cert.pem... क्या उन्हें वेब्रॉट में होना चाहिए?
उज्ज्वल-तारा

निरपेक्ष रास्तों का उपयोग कर चालबाजी की।
उज्ज्वल-तारा

मैं एक डॉकटर-कंटेनर का उपयोग कर रहा था और इस मुद्दे को हर बार मार रहा था कि मैंने कंटेनर को फिर से बनाया। chmod -R 600 /etc/nginx/sslमेरे एंट्रीपॉइंट में जोड़ने से इस मुद्दे का समाधान हो जाता है धन्यवाद
दिमित्री कोपरिवा

3

यदि कोई इस विषय पर आता है, तो मैं अपनी समस्या के लिए अपना उत्तर छोड़ दूंगा।

मैं डॉक कंटेनर के अंदर नगनेक्स चलाता हूं, और निजी कुंजी फ़ाइल तक पहुंचने की कोशिश में एक ही त्रुटि है। कई घंटों तक मेरे सिर को खरोंचने के बाद, मुझे पता चलता है कि मेरे डॉकर्स के नगनेक्स में माउंट वॉल्यूम नहीं है जिसमें कोई डेटा नहीं है।

माउंट वॉल्यूम जोड़ने का एकमात्र विकल्प विकल्प के साथ कंटेनर को निकालना और फिर से बनाना है -v: https://docs.docker.com/engine/tutorials/dockervolumes/

docker run -d -P --name docker-nginx -v /etc/ssl/certs:/etc/ssl/certs nginx

कभी-कभी, तुच्छ चीजों को देखना मुश्किल होता है। उममीद है कि इससे मदद मिलेगी।


2

एक संभावित परिदृश्य:

कभी-कभी ऐसा हो सकता है कि, वर्चुअलहोस्ट के लिए SSL फाइल (निजी कुंजी और प्रमाण पत्र) को कॉन्फ़िगर करते समय जो कॉन्फ़िगर किया जा रहा है, यह उस पूर्ण पथ को निर्दिष्ट करने के लिए भूल गया जहां ये फाइलें निवास करती हैं।

उदाहरण के लिए, यदि आप Nginx से इस आधिकारिक दस्तावेज़ का पालन करते हैं: http://nginx.org/en/docs/http/configuring_https_servers.html

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     tdmssl.crt;
    ssl_certificate_key tdmssl.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ...
}

मान लीजिए कि आप SSL फ़ाइलों को " /etc/nginx/conf.d " के अंदर संग्रहीत करते हैं :

root@ilg40:/etc/nginx/conf.d# pwd
/etc/nginx/conf.d
root@ilg40:/etc/nginx/conf.d# ll
total 16
drwxr-xr-x 2 root root 4096 Jan 24 17:39 ./
drwxr-xr-x 5 root root 4096 Jan 24 21:15 ../
-rw-r--r-- 1 root root 1359 Jan 24 17:39 tdmssl.crt
-rw-r--r-- 1 root root 1675 Jan 24 17:39 tdmssl.key

क्या होता है?

डिफ़ॉल्ट रूप से, जब Nginx द्वारा उपयोग की जाने वाली साधारण फ़ाइल के लिए पूर्ण पथ निर्दिष्ट नहीं किया जाता है, तो Nginx "/ etc / nginx" पर फ़ाइलों की खोज करेगा

/Var/log/nginx/error.log से

2017/01/24 21:05:10 [emerg] 13113#0: 
BIO_new_file("/etc/nginx/tdmssl.crt") 
failed(SSL:error:02001002:system library:fopen:
No such file or directory:fopen('/etc/nginx/tdmssl.crt','r') 
error:2006D080:BIO routines:BIO_new_file:no such file)

क्या करना होगा?

आपके वर्चुअलहोस्ट कॉन्फ़िगरेशन द्वारा उपयोग की जाने वाली अतिरिक्त फ़ाइलों के पूर्ण पथ को निर्दिष्ट करने के लिए।

ऐशे ही:

root@ilg40:/etc/nginx/conf.d# cd
root@ilg40:~# cat /etc/nginx/sites-available/tdm 
server {

    listen          443 ssl;
    server_name         tjsdatamanager.redtjs.com;
    ssl_certificate     /etc/nginx/conf.d/tdmssl.crt;
    ssl_certificate_key /etc/nginx/conf.d/tdmssl.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    location / {
        include proxy_params;
        proxy_pass http://unix:/etc/tdm/flask/wsgi.sock;
    }

}

-1

मेरी भी यही समस्या थी। मुझे / etc / nginx / साइट्स-सक्षम / डिफ़ॉल्ट और default.save फ़ाइलों को बदलना पड़ा , जो सेटअप प्रक्रिया के दौरान .com के बिना मेरी साइट का नाम ऑटो-जोड़ा गया था , जो मेरे INSTUE में मौजूद था । इसे छोटा रखने के लिए, इन दो लाइनों को मेरे / etc / nginx / साइटों-सक्षम / डिफ़ॉल्ट में बदलने की आवश्यकता है। कृपया ध्यान दें कि यह फ़ाइल मेरे फ़ाइल सिस्टम में एक शॉर्टकट आइकन के साथ प्रदर्शित की गई है, लेकिन मैं फ़ाइल को राइट क्लिक करने और इसे "संपादित / आंतरिक संपादक" विकल्प के साथ संपादित करने में सक्षम था।

HTTPS - स्थानीय Node.js एपी # HTTPS पर प्रॉक्सी अनुरोध - स्थानीय Node.js एप्लिकेशन पर प्रॉक्सी अनुरोध: सर्वर {443 सुनो; server_name switchmagic.com;

    ssl on;
    # Use certificate and key provided by Let's Encrypt:
    ssl_certificate /etc/letsencrypt/live/switchmagic.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/switchmagic.com/privkey.pem;

जब मैं फ़ाइलों के माध्यम से चला गया और .com, जो कि नामकरण सम्मेलन है, जिसका उपयोग मैंने फ़ाइल को जोड़ने के लिए किया, फ़ाइल निर्देशिकाओं में स्विचगैम संदर्भों में जो त्रुटियों को फेंक रहे थे, सब ठीक था! मैंने बहुत सारे देवों को एक ही प्रश्न पूछते हुए पाया इसलिए मैं अपने समाधान को वहाँ फेंकना चाहता था क्योंकि मुझे जो उत्तर मिले वे ज्यादातर रूट अनुमतियों के बारे में थे, लेकिन रूट अनुमतियाँ मेरे मामले में समस्या नहीं थीं। देवों पर शिला।

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