কীভাবে এসএসএল দিয়ে এনগিনেক্স সুরক্ষিত করবেন এবং ফ্রিবিএসডি-তে এনক্রিপ্ট করুন


এই গাইডটিতে আমরা আলোচনা করব যে কীভাবে লেটস এনক্রিপ্ট শংসাপত্র কর্তৃপক্ষের জন্য প্রস্তাবিত টিএলএস/এসএসএল শংসাপত্রগুলি দিয়ে ফ্রিবিএসডি-তে Nginx ওয়েব সার্ভারটি সুরক্ষিত করা যায়। মেয়াদ উত্তীর্ণ হওয়ার তারিখের আগে কীভাবে স্বয়ংক্রিয়ভাবে লেটস'র এনক্রিপ্ট শংসাপত্রগুলি পুনর্নবীকরণ করবেন তা আমরা আপনাকে দেখাব।

টিএলএস, ট্রান্সপোর্ট লেয়ার সিকিউরিটির সংক্ষিপ্ত রূপ, একটি প্রোটোকল যা HTTP প্রোটোকলের অধীনে চলে এবং প্যাকেটগুলি এনক্যাপুলেট করতে এবং সার্ভার এবং ক্লায়েন্টের মধ্যে বিনিময় হওয়া ডেটা এনক্রিপ্ট করার জন্য, অথবা এই ক্ষেত্রে Nginx ওয়েব সার্ভার এবং ক্লায়েন্টের মধ্যে থাকে ব্রাউজারটি, সংযোগটি সুরক্ষিত করার জন্য, যাতে কোনও তৃতীয় পক্ষ, যিনি ট্র্যাফিককে বাধা দিতে পারে, সংক্রমণটি ডিক্রিপ্ট করতে না পারে।

ফ্রিবিএসডি-তে একটি বিনামূল্যে লেটস এনক্রিপ্ট শংসাপত্র প্রাপ্তির প্রক্রিয়াটি সার্টিবুট ক্লায়েন্ট ইউটিলিটি ইনস্টল করে খুব সহজ করা যেতে পারে, যা শংসাপত্র তৈরি ও ডাউনলোড করার জন্য ব্যবহৃত সরকারী লেটস এনক্রিপ্ট ক্লায়েন্ট।

  1. ফ্রিবিএসডি-তে এফবিইএমপি (এনগিনেক্স, মারিয়াডিবি এবং পিএইচপি) স্ট্যাক ইনস্টল করুন

পদক্ষেপ 1: এনগিনেক্স টিএলএস/এসএসএল কনফিগার করুন

১. ডিফল্টরূপে, টিএলএস/এসএসএল সার্ভার কনফিগারেশনটি ফ্রিবিএসডি-তে সক্ষম নয় কারণ টিএলএস সার্ভার ব্লক স্টেটমেন্টগুলি এনগিনেক্স ডিফল্ট কনফিগারেশন ফাইলটিতে মন্তব্য করা হয়েছে।

এনগিনেক্সে টিএলএস সার্ভারটি সক্রিয় করার জন্য, এনগিনেক্স.কনফাই কনফিগারেশন ফাইলটি খুলুন, লাইনটি অনুসন্ধান করুন যা SSL সার্ভারের প্রারম্ভিক সংজ্ঞা দেয় এবং নীচের নমুনায় দেখতে পুরো ব্লকটি আপডেট করুন।

# nano /usr/local/etc/nginx/nginx.conf

এনগিনেক্স এইচটিটিপিএস ব্লক সংক্ষিপ্তসার:

server {
       listen 443 ssl  default_server;
       server_name  www.yourdomain.com;
	
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;
	error_page   500 502 503 504  /50x.html;
        
	location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }
	
	location / {
	    root   /usr/local/www/nginx;
       	    index  index.html index.htm;
	    try_files $uri $uri/ /index.php?$args;
				}

	ssl_certificate "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem";
	ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem";
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /usr/local/etc/nginx/dhparam.pem;
	ssl_session_cache shared:SSL:1m;
	ssl_session_timeout 10m;
	ssl_ciphers HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers  on;

	# Use gzip compression
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_http_version 1.0;

	# Set a variable to work around the lack of nested conditionals
	
	set $cache_uri $request_uri;
	
	location ~ /.well-known {
	allow all;
		}
    


        location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
		include        fastcgi_params;
        }	
    }

উপরের ব্লকটিতে, এসএসএল ব্লক ছাড়াও, গতিশীল ওয়েব অ্যাপ্লিকেশনগুলি চালনার জন্য পিএইচপি কোড পিএইচপি-এফপিএম গেটওয়েতে পাস করার জন্য ব্যবহৃত জিজেপ সংক্ষেপণ এবং ফাস্টসিজিআই প্রক্রিয়া পরিচালককে সক্ষম করার জন্য কিছু বিবৃতি রয়েছে।

আপনি উপরের কোডটি এনগিনেক্স মূল কনফিগারেশন ফাইলে যুক্ত করার পরে, আপনার ডোমেনের জন্য লেটস এনক্রিপ্ট শংসাপত্র ইনস্টল করার আগে এবং সেটিংস প্রয়োগ করার আগে ডেমন পুনরায় আরম্ভ করবেন না বা সেটিংস প্রয়োগ করবেন না।

পদক্ষেপ 2: ফ্রিবিএসডি-তে সার্টবট ক্লায়েন্ট ইনস্টল করুন

২. ফ্রিবিএসডি-তে লেটস এর এনক্রিপ্ট সার্টিবোট ক্লায়েন্ট ইউটিলিটি ইনস্টল করার প্রক্রিয়াটির সাথে নীচের কমান্ডগুলি জারি করে পাই-সার্টবোটের জন্য উত্স কোডটি ডাউনলোড করা এবং স্থানীয়ভাবে এটি সংকলন করা জড়িত।

# cd /usr/ports/security/py-certbot
# make install clean

৩. পাই-সার্টবট ইউটিলিটি সংকলন করতে নিয়মিত বাইনারি প্যাকেজ ইনস্টল করার সাথে তুলনা করতে অনেক সময় লাগে। এই সময়ের মধ্যে, ফ্রিবিএসডি-তে স্থানীয়ভাবে সংকলিত হয়ে একটি সিরিজ নির্ভরতা ডাউনলোড করতে হবে।

এছাড়াও, প্রতিটি স্ক্রিনে অনুরোধের একটি সিরিজ উপস্থিত হবে, যা আপনাকে প্রতিটি নির্ভরতার জন্য সংকলন করার সময় কী প্যাকেজগুলি ব্যবহার করা হবে তা নির্বাচন করার জন্য দাবি করে। প্রথম স্ক্রিনে, পাইথন 27 নির্ভরতা সংকলনের জন্য, [স্পেস] কী টিপে নীচের সরঞ্জামগুলি নির্বাচন করুন, নীচের চিত্রটিতে বর্ণিত।

  • আইপিভি 6
  • এলআইবিএফএফআই
  • এনএলএস
  • পাইমলক
  • থ্রেডস
  • ইউনিকোড সহায়তার জন্য ইউসিএস 4

৪. এরপরে, গেটেক্সটেক্স-সরঞ্জাম নির্ভরতার জন্য ডকস এবং থ্রেডস নির্বাচন করুন এবং নীচের চিত্রটিতে প্রদর্শিত হিসাবে চালিয়ে যেতে ঠিক আছে টিপুন।

৫. পরবর্তী স্ক্রিনে টেস্টস বিকল্পটি লিবিফি -২.২.১ এর জন্য অক্ষম করুন এবং আরও সরানোর জন্য ওকে টিপুন।

Next. এরপরে, পাই -27-এনাম 34 নির্ভরতার জন্য ডোকস নির্বাচন করতে স্পেসটি হিট করুন, যা এই সরঞ্জামটির জন্য ডকুমেন্টেশন ইনস্টল করবে এবং নীচে স্ক্রিনশটে চিত্রিত হিসাবে অবিরত রাখতে ঠিক আছে টিপুন।

Finally. পরিশেষে, [স্পেস] কী টিপে py27-openssl নির্ভরতার জন্য উদাহরণ নমুনাগুলি ইনস্টল করার জন্য চয়ন করুন এবং পাই-সার্টবোট ক্লায়েন্টের সংকলন এবং ইনস্টলেশন প্রক্রিয়া শেষ করতে ওকে চাপুন।

৮. পাই-সার্টবট ইউটিলিটি শেষ করে সংকলন এবং ইনস্টল করার প্রক্রিয়া শেষে, নীচের স্ক্রিনশটগুলিতে চিত্রিত হিসাবে প্যাকেজের সর্বশেষ সংস্করণে সরঞ্জামটি আপগ্রেড করতে নীচের কমান্ডটি চালান।

# pkg install py27-certbot

9. একটি বিনামূল্যে লেটস এনক্রিপ্ট শংসাপত্র প্রাপ্ত করার সময় এটি হতে পারে এমন কিছু সমস্যা এড়ানোর জন্য, "pkg_resferences.DisificationsNotFound" হওয়া সর্বাধিক সাধারণ ত্রুটিটি নিশ্চিত করুন যে নিম্নলিখিত দুটি নির্ভরতা আপনার সিস্টেমেও রয়েছে: পাই 27-লবণের এবং পাই 27-অ্যাকমে ।

# pkg install py27-salt
# pkg install py27-acme

পদক্ষেপ 3: ফ্রিবিএসডি-তে এনগিনেক্সের জন্য চলুন এর এনক্রিপ্ট শংসাপত্র ইনস্টল করুন

১০. আপনার ডোমেনের জন্য লেটস এনক্রিপ্ট স্ট্যান্ডলোন শংসাপত্র পাওয়ার জন্য, নিম্নলিখিত কমান্ডটি চালনা করুন এবং আপনাকে ডোমেন নাম এবং সমস্ত সাবডোমেনগুলি -d পতাকা প্রয়োগ করে শংসাপত্রগুলি পেতে চান তা সরবরাহ করুন।

# certbot certonly --standalone -d yourdomain.com -d www.yourdomain.com

১১. শংসাপত্র তৈরি করার সময় আপনাকে ইমেল ঠিকানা প্রবেশ করতে এবং লেটস এর এনক্রিপ্ট পরিষেবার শর্তাদির সাথে সম্মত হতে বলা হবে। সম্মতি জানাতে এবং চালিয়ে যেতে কীবোর্ড থেকে a টাইপ করুন এবং লেটস এর এনক্রিপ্ট অংশীদারদের সাথে আপনার ইমেল ঠিকানা ভাগ করতে ইচ্ছুক কিনা তাও আপনাকে জিজ্ঞাসা করা হবে।

আপনি যদি নিজের ইমেল ঠিকানাটি ভাগ না করতে চান তবে প্রম্পটে কেবল শব্দটি টাইপ করুন এবং চালিয়ে যাওয়ার জন্য [enter] কী টিপুন। আপনার ডোমেনের শংসাপত্রগুলি সফলভাবে প্রাপ্ত হওয়ার পরে, আপনি কয়েকটি গুরুত্বপূর্ণ নোট পাবেন যা আপনার সিস্টেমে শংসাপত্রগুলি কোথায় সংরক্ষণ করা হবে এবং সেগুলির মেয়াদ শেষ হওয়ার পরে আপনাকে তা জানিয়ে দেবে।

১২. আপনি যদি আপনার ডোমেনের জন্য এনগিনক্স সার্ভারের ওয়েবরুট ডিরেক্টরি যুক্ত করে "ওয়েবরুট" প্লাগইন ব্যবহার করে একটি লেটস এনক্রিপ্ট শংসাপত্রটি পেতে চান তবে নীচের কমান্ডটি --webroot এবং দিয়ে জারি করুন -w পতাকা। ডিফল্টরূপে, আপনি যদি Nginx ওয়েবরুট পাথটি পরিবর্তন না করে থাকেন তবে এটি/usr/স্থানীয়/www/nginx/সিস্টেমের পথে অবস্থিত হওয়া উচিত।

# certbot certonly --webroot -w /usr/local/www/nginx/ -d yourdomain.com -d www.yourdomain.com

শংসাপত্র পাওয়ার জন্য - স্ট্রান্ডালোন পদ্ধতি অনুসারে, --webroot পদ্ধতি আপনাকে শংসাপত্র পুনর্নবীকরণ এবং সুরক্ষা বিজ্ঞপ্তির জন্য একটি ইমেল ঠিকানা সরবরাহ করতে বলবে একটি আসুন এনক্রিপ্টের শর্তাদি এবং শর্তগুলির সাথে সম্মত হন এবং ইমেল ঠিকানাটি ভাগ করে নেওয়ার জন্য না বা হ্যাঁ অংশীদারদের এনক্রিপ্ট করুন যা নীচের নমুনায় চিত্রিত হয়েছে Enc

সচেতন থাকুন যে সার্টিবোট ক্লায়েন্ট একটি নকল ইমেল ঠিকানা সনাক্ত করতে পারে এবং আপনি একটি সত্যিকারের ইমেল ঠিকানা সরবরাহ না করা পর্যন্ত আপনাকে শংসাপত্র তৈরি করা চালিয়ে যেতে দেয় না।

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email   #A fake email address will be detected
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email 

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/nginx/ for all unmatched domains. Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-12-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

পদক্ষেপ 4: এনগিনেক্স টিএলএস শংসাপত্রগুলি আপডেট করুন

13. ফ্রিবিএসডি-তে প্রাপ্ত লেটস এনক্রিপ্ট শংসাপত্র এবং কীগুলির অবস্থান /usr/local/etc/letsencrypt/live/www.yourdomain.com/ সিস্টেমের পথ। আপনার লেটের এনক্রিপ্ট শংসাপত্রের উপাদানগুলি প্রদর্শন করতে ls কমান্ড জারি করুন: নিম্নলিখিত উদাহরণটিতে চিত্রিত হিসাবে চেইন ফাইল, ফুলচেইন ফাইল, প্রাইভেট কী এবং শংসাপত্র ফাইল।

# ls /usr/local/etc/letsencrypt/live/www.yourdomain.com/

14. এনগিনেক্স ওয়েব সার্ভারে আপনার ডোমেনের জন্য চলুন এনক্রিপ্ট শংসাপত্রগুলি ইনস্টল করতে, Nginx মূল কনফিগারেশন ফাইল বা Nginx টিএলএস সার্ভারের জন্য কনফিগারেশন ফাইলটি খুলুন, যদি এটি আলাদা ফাইল হয় এবং লেট এনক্রিপ্টের পথ প্রতিফলিত করতে নীচের লাইনগুলিকে সংশোধন করুন নীচে চিত্রিত হিসাবে জারি শংসাপত্র।

# nano /usr/local/etc/nginx/nginx.conf

এই নমুনায় দেখতে নিম্নলিখিত লাইনগুলি আপডেট করুন:

ssl_certificate "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem";
	ssl_certificate_key "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem";

15. এছাড়াও, যদি sgl_dparam লাইনটি Nginx এসএসএল কনফিগারেশনে উপস্থিত থাকে, আপনার নিম্নলিখিত কমান্ডের সাথে একটি নতুন 2048 বিট ডিফি-হেলম্যান কী উত্পন্ন করা উচিত:

# openssl dhparam –out /usr/local/etc/nginx/dhparam.pem 2048 

১.. পরিশেষে, এনগিনেক্স টিএলএস কনফিগারেশনটি সক্রিয় করার জন্য, প্রথমে সম্ভাব্য বাক্য গঠন ত্রুটির জন্য এনগিনেক্স গ্লোবাল কনফিগারেশনটি পরীক্ষা করুন এবং তারপরে নিম্নলিখিত কমান্ডগুলি জারি করে এসএসএল কনফিগারেশন প্রয়োগ করতে এনগিনেক্স পরিষেবা পুনরায় চালু করুন।

# nginx -t
# service nginx restart

17. নিম্নলিখিত কমান্ড জারি করে Nginx ডিমন 443 পোর্টে আবদ্ধ কিনা তা নিশ্চিত করুন যা শোনার অবস্থায় সিস্টেমে সমস্ত খোলা নেটওয়ার্ক সকেট তালিকাভুক্ত করতে পারে।

# netstat -an -p tcp| grep LISTEN
# sockstat -4 

18. আপনি ব্রাউজার খোলার মাধ্যমে এইচটিটিপিএস প্রোটোকলের মাধ্যমে আপনার ডোমেন ঠিকানাটিও দেখতে পারেন এবং লেটস এর এনক্রিপ্ট শংসাপত্র প্রত্যাশার সাথে কাজ করছে তা নিশ্চিত করার জন্য নিম্নলিখিত ঠিকানাটি টাইপ করতে পারেন। আপনি বৈধ শংসাপত্র কর্তৃপক্ষের দ্বারা উত্পন্ন শংসাপত্রগুলি ব্যবহার করার কারণে ব্রাউজারে কোনও ত্রুটি প্রদর্শিত হবে না।

https://www.yourdomain.com

19. ওপেনসেল ইউটিলিটি নিম্নলিখিত বিকল্পগুলির সাহায্যে কমান্ডটি চালিয়ে লেটস এনক্রিপ্ট সিএ থেকে প্রাপ্ত একটি শংসাপত্র সম্পর্কে তথ্য পেতে আপনাকে সহায়তা করতে পারে।

# openssl s_client -connect www.yourdomain.com:443

আপনি যদি Nginx কে আপনার ডোমেনের জন্য 80 টি এইচটিটিপিএসের জন্য প্রাপ্ত https র সমস্ত অনুরোধে HTTP রিকোয়েস্টের নির্দেশনা দিতে, Nginx কনফিগারেশন ফাইলটি খুলুন, 80 পোর্টের জন্য সার্ভারের নির্দেশিকাটি সন্ধান করতে এবং নীচের উদাহরণে চিত্রিত হিসাবে সার্ভার_নাম বিবৃতি দেওয়ার পরে নীচের লাইনটি যুক্ত করতে চান ।

rewrite ^(.*) https://www.yourdomain.com$1 permanent;

20. লেটস এর এনক্রিপ্ট কর্তৃপক্ষের মেয়াদ শেষ হওয়ার আগে জারি করা শংসাপত্রের জন্য অটো রিনিউল সেটআপ করার জন্য নিম্নলিখিত কমান্ড জারি করে দিনে একবার চালানোর জন্য ক্রোন জবুলি নির্ধারণ করে কাজটি করা যেতে পারে।

# crontab -e

শংসাপত্র পুনর্নবীকরণের ক্রোন টাস্ক।

0 0 * * * certbot renew >> /var/log/letsencrypt.log

এখানেই শেষ! Nginx এখন লেটস এনক্রিপ্টের বিনামূল্যে শংসাপত্রগুলি ব্যবহার করে আপনার দর্শকদের সুরক্ষিত ওয়েব অ্যাপ্লিকেশন সরবরাহ করতে পারে।