Nginx প্রারম্ভের এসএসএল ব্যর্থ হয় যেমন কোন ফাইল বা ডিরেক্টরি


14

আমি যে ত্রুটিটি পাচ্ছি তা এখানে:

পুনরায় লোড করা হচ্ছে এনজিএনএক্স কনফিগারেশন: এনগিনেক্স: [ইমার্জ] এসএসএলসিটিএক্সএক্স_সার্টিফিট_চেইন_ফায়াল ("/ পাথ / টু / সার্টি.পিএম") ব্যর্থ হয়েছে (এসএসএল: ত্রুটি: 02001002: সিস্টেম লাইব্রেরি: ফপেন: এই জাতীয় কোনও ফাইল বা ডিরেক্টরি ত্রুটি: 20074002: BIO রুটিনগুলি: FILE_CTRL: সিস্টেম লিবি ত্রুটি: 140ডিসি 002: এসএসএল রুটিনগুলি: এসএসএল_সিটিএক্স_ইস_সেসিফিট_চেইন_ফায়াল: সিস্টেম লাইব) এনজিন্স: কনফিগারেশন ফাইল /etc/nginx/nginx.conf পরীক্ষা ব্যর্থ হয়েছে

আমি 100% নিশ্চিত যে ফাইলটি সেই স্থানে রয়েছে তবে এনগিনেক্স মনে হয় এটি সেখানে নেই। আমি সেই ক্রমে domain.crtএবং intermediate.crtম্যানুয়ালি একত্রীকরণ করেছি । আমি সারাদিন এটার উপর দিয়ে আমার মাথা আঁচড়াচ্ছি। আমি আশা করি কেউ এই ত্রুটিটি দেখেছেন এবং এর সমাধান রয়েছে।


3
path/to/cert.pemঅবশ্যই না একটি বৈধ অবস্থান।
মাইকেল হ্যাম্পটন

আপনি এটি ধরে নিতে সঠিক যে আসল পথ নয়। তবে আমি সহজেই সেই অবস্থানটির একটি বৈধ অংশ তৈরি করতে পারি। তবে যে কোনও সংস্থার জন্য এটি করা হচ্ছে তার কারণে আমি আপনাকে বিশদ সরবরাহ করতে অক্ষম। আমাকে ব্যবহারকারীর নামটি ছেড়ে দিতে হবে।
tgoza

উত্তর:


15

আপনি কি নিশ্চিত যে Nginx ব্যবহারকারীর ডিরেক্টরিতে অ্যাক্সেস রয়েছে?

এছাড়াও .pemফাইলটির অনুমতিগুলি পরীক্ষা করে দেখুন , যদি এনগিনেক্স এটি অ্যাক্সেস করতে না পারে তবে এটি হিসাবে প্রদর্শিত হতে পারে '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কারণ অনুমতিগুলি খুব বেশি খোলা রয়েছে (এনগিনেক্স এটি করে তা যাচাই করার জন্য উত্স প্রয়োজন) তবে উপরের সেটআপটি ঠিকঠাক কাজ করা উচিত।


আমি পথটি দু'বার যাচাই করেছি এবং এটি /শুরুতে ধারণ করে তাই আমি এটি প্রতিফলিত করতে প্রশ্নটি পরিবর্তন করেছি। ফাইলটি অবস্থিত /home/user/subdirsএবং সেগুলির মধ্যে থাকা সমস্ত ফাইল এবং ডিরেক্টরি অনুমতিগুলির ব্যবহারকারীর দ্বারা মালিকানাধীন রয়েছে। এবং আমি মনে করি যে এনগিনেক্সের ডাব্লুএইচ-ডেটার মালিকানাধীন যে কোনও কিছুতে অ্যাক্সেস রয়েছে, যদিও আমার ভুল হতে পারে।
tgoza

সর্বদা সহজ ভুলগুলি যা চিরকালের জন্য খুঁজে বের করতে হবে :) খুশি যে আপনি এটি কার্যকর করেছেন।
জিম ডাব্লু।

ঠিক দেখতে কেমন লাগল? আমি খনি আছে $root/keys/তাই আমার যা নিশ্চিতভাবে ঘটবে লাইন দেখে মনে হচ্ছে ssl_certificate keys/cert.pem... তারা webroot হতে হবে?
উজ্জ্বল তারা

পরম পাথ ব্যবহার করে কৌতুকটি করল।
উজ্জ্বল তারা

আমি একটি ডকার-ধারক ব্যবহার করছিলাম এবং আমি যখনই ধারকটি পুনরায় তৈরি করতাম তখনই এই সমস্যাটি হিট করছিলাম। chmod -R 600 /etc/nginx/sslআমার এন্ট্রিপয়েন্টে যুক্ত করে সমস্যাটি সমাধান করুন ধন্যবাদ
দিমিত্রি কোপ্রিভা

3

যদি কেউ এই বিষয়টিতে আসে তবে আমি আমার সমস্যার জন্য আমার উত্তরটি রেখে দেব।

আমার ডকেনার ধারকের ভিতরে এনজিন্স রয়েছে এবং প্রাইভেট কী ফাইলটি অ্যাক্সেস করতে গিয়ে একই ত্রুটি হয়েছে। বেশ কয়েক ঘন্টা আমার মাথা আঁচড়ানোর পরে, আমি উপলব্ধি করতে পারি যে আমার ডকারের এনজিন্সের মাউন্ট ভলিউম নেই যা আমার ডেটা রয়েছে।

মাউন্ট ভলিউম যুক্ত করার একমাত্র বিকল্প হ'ল -vবিকল্পটি সহ কনটেইনারটি সরিয়ে এবং পুনরায় তৈরি করা : https://docs.docker.com/engn/tutorials/dockervolume/

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

কখনও কখনও, তুচ্ছ জিনিসগুলি দেখতে শক্ত হয়। এই সাহায্য আশা করি।


2

একটি সম্ভাব্য দৃশ্য:

কখনও কখনও এটি ঘটতে পারে যে, ভার্চুয়ালহোস্ট যা কনফিগার করা হচ্ছে তার জন্য এসএসএল ফাইলগুলি (ব্যক্তিগত কী এবং শংসাপত্র) কনফিগার করার সময়, এই ফাইলগুলি কোথায় থাকে তার নিখুঁত পথ নির্দিষ্ট করতে ভুলে গিয়েছিল।

উদাহরণস্বরূপ, আপনি যদি 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;
    ...
}

মনে করুন যে আপনি " /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

আমারো একই ইস্যু ছিল. আমাকে / ইত্যাদি / এনগিনেক্স / সাইটগুলি সক্ষম / ডিফল্ট এবং ডিফল্ট পরিবর্তন করতে হয়েছিল which সেভ ফাইলগুলি যা সেটআপ প্রক্রিয়া চলাকালীন .com ছাড়াই আমার সাইটের নামটি স্বয়ংক্রিয়ভাবে যুক্ত করা হয়েছিল, যেটি আমার ইনস্ট্যান্সে ইস্যু ছিল । এটি সংক্ষিপ্ত রাখতে, এই দুটি লাইনটি আমার / ইত্যাদি / এনজিনেক্স / সাইটগুলি সক্ষম / ডিফল্টে পরিবর্তন করা দরকার। দয়া করে মনে রাখবেন যে এই ফাইলটি আমার ফাইল সিস্টেমে একটি শর্টকাট আইকন দ্বারা প্রদর্শিত হয়েছে তবে আমি ফাইলটি ডান ক্লিক করতে এবং "সম্পাদনা / অভ্যন্তরীণ সম্পাদক" বিকল্পের সাহায্যে এটি সম্পাদনা করতে সক্ষম হয়েছি।

এইচটিটিপিএস - স্থানীয় নোড.জেজেজে প্রক্সি অনুরোধগুলি # এইচটিটিপিএস - স্থানীয় নোড.জেএস অ্যাপ্লিকেশনটিতে প্রক্সি অনুরোধগুলি: সার্ভার {শুনুন 443; সার্ভার_নাম সুইচমেজিক.কম;

    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, যা নামকরণের কনভেনশনটি ফাইলটি যুক্ত করার জন্য ব্যবহৃত হত, ততক্ষণে ফাইল ডিরেক্টরিগুলির মধ্যে থাকা সুইচমজিক রেফারেন্সগুলিতে, সমস্ত কিছু ঠিক ছিল! আমি অনেকগুলি দেব একই প্রশ্ন জিজ্ঞাসা করেছিলাম তাই আমি আমার সমাধানগুলি সেখানে খুঁজে বের করতে চেয়েছিলাম কারণ আমি যে উত্তরগুলি পেয়েছি সেগুলি বেশিরভাগই মূল অনুমতি সম্পর্কে ছিল, তবে রুট অনুমতিগুলি আমার ক্ষেত্রে বিষয়টি ছিল না। দেবসকে রক করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.