আরএইচইএল/সেন্টোস 7/6 এ এনগিনেক্সের জন্য এনক্রিপ্ট এসএসএল শংসাপত্রের সাথে এইচটিটিপিএস সেট আপ করা হচ্ছে


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

আপনি যদি আরএইচইল/সেন্টোস 7/6 এবং ফেডোরা বিতরণগুলিতে অ্যাপাচি-র জন্য লেটস এনক্রিপ্ট ইনস্টল করতে চান তবে নীচের এই গাইডটি অনুসরণ করুন:

  1. সার্ভারের সর্বজনীন আইপি ঠিকানায় ফিরে যাওয়ার জন্য বৈধ A DNS রেকর্ড সহ একটি নিবন্ধিত ডোমেন নাম
  2. এসএসএল সক্ষম হওয়া এবং ভার্চুয়াল হোস্ট সক্ষম (এনটাইটেল একাধিক ডোমেন বা সাবডোমেন হোস্টিংয়ের জন্য) সহ এনগিনেক্স ওয়েব সার্ভার ইনস্টল

পদক্ষেপ 1: Nginx ওয়েব সার্ভার ইনস্টল করুন

১. প্রথম ধাপে, আপনি ইতিমধ্যে এনগিনেক্স ডেমন ইনস্টল না করে থাকলে, এপেল সংগ্রহস্থল থেকে এনগিনেক্স ওয়েবসার্ভার ইনস্টল করার জন্য নীচের কমান্ডগুলি রুট সুবিধাগুলি সহ জারি করুন:

# yum install epel-release
# yum install nginx

পদক্ষেপ 2: ডাউনলোড করুন বা ক্লোন ফ্রি লেট এর এনক্রিপ্ট এসএসএল শংসাপত্র

২. গিথুব সংগ্রহস্থল থেকে প্যাকেজ ক্লোন করে লিনাক্স সিস্টেমে লেটস এনক্রিপ্ট ক্লায়েন্ট ইনস্টল করার দ্রুততম পদ্ধতি।

প্রথমে নীচের কমান্ডটি দিয়ে সিস্টেমে গিট ক্লায়েন্ট ইনস্টল করুন:

# yum install git

৩. গিট ক্লায়েন্ট ইনস্টল হওয়ার পরে ডিরেক্টরিটি /opt পথে পরিবর্তন করুন এবং নীচের কমান্ডগুলি চালিয়ে চলুন এর এনক্রিপ্ট সফ্টওয়্যারটি টানুন:

# cd /opt
# git clone https://github.com/letsencrypt/letsencrypt

পদক্ষেপ 3: এনগিনেক্সের জন্য একটি বিনামূল্যে লেটস এনক্রিপ্ট এসএসএল শংসাপত্র তৈরি করুন

৪. এনগিনেক্সের জন্য একটি নিখরচায় এসএসএল/টিএলএস শংসাপত্র প্রাপ্তির প্রক্রিয়াটি লেটস এনক্রিপ্ট স্ট্যান্ডলোন প্লাগইন ব্যবহার করে ম্যানুয়ালি করা হবে।

এই পদ্ধতির জন্য 80 বন্দরটি অবশ্যই মুক্ত থাকতে হবে চলুন চলুন এর এনক্রিপ্ট ক্লায়েন্টটি সার্ভারের পরিচয় যাচাই করে এবং শংসাপত্র তৈরি করে।

সুতরাং, যদি এনগিনেক্স ইতিমধ্যে চলমান থাকে তবে নিম্নলিখিত কমান্ড দিয়ে ডেমোনটি বন্ধ করুন এবং নিশ্চিত করুন যে পোর্ট 80 আর নেটওয়ার্ক স্ট্যাকের মধ্যে ব্যবহার করা যাচ্ছে না তা নিশ্চিত করার জন্য ss ইউটিলিটি চালান।

# service nginx stop
# systemctl stop nginx
# ss -tln

৫. এখন আসুন লেটস এনক্রিপ্ট থেকে একটি বিনামূল্যে এসএসএল শংসাপত্র প্রাপ্ত করার সময় obtain আপনি যদি ইতিমধ্যে না থাকেন তবে লেটস এনক্রিপ্ট ইনস্টলেশন ডিরেক্টরিতে যান এবং লেটসেনক্রিপ্ট-অটো > কমান্ডটি স্বতঃ << কোড - স্ট্যান্ডলোন বিকল্প এবং -ডি < নীচের উদাহরণে প্রস্তাবিত প্রতিটি ডোমেন বা সাবডোমেনের জন্য/কোড> পতাকা আপনি একটি শংসাপত্র তৈরি করতে চান।

# cd /opt
# ./letsencrypt-auto certonly --standalone -d your_domain.tld -d www.yourdomain.tld

Your. আপনার মেশিনে একাধিক প্যাকেজ এবং নির্ভরতা ইনস্টল হওয়ার পরে আসুন আসুন এর এনক্রিপ্ট আপনাকে আপনার অ্যাকাউন্টে প্রবেশ করতে অনুরোধ জানাবে যা হারানো কী পুনরুদ্ধার বা জরুরি বিজ্ঞপ্তির জন্য ব্যবহৃত হবে।

Next. এরপরে আপনার এন্টার কী টিপে লাইসেন্সের শর্তাদি সম্মত করা উচিত।

৮. অবশেষে, যদি সবকিছু ঠিক যেমনটি ঘটে তবে আপনার বাশ টার্মিনালে একটি অভিনন্দন তথ্য বার্তা প্রদর্শিত হবে। শংসাপত্রের মেয়াদ শেষ হয়ে গেলে বার্তাটি প্রদর্শিত হবে।

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

৯. এখন আপনি যখন একটি নিখরচায় এসএসএল/টিএলএস শংসাপত্রের মালিক হন, আপনার ডোমেনটি এটি ব্যবহার করার জন্য এটি Nginx ওয়েব সার্ভারে এটি ইনস্টল করার সময় এসেছে।

সমস্ত নতুন এসএসএল শংসাপত্রগুলি আপনার ডোমেনের নামের পরে একটি ডিরেক্টরিতে /etc/letsencrypt/live/ এ স্থাপন করা হয়েছে। আপনার ডোমেনের জন্য জারি করা শংসাপত্র ফাইলগুলি তালিকাভুক্ত করতে এবং তাদের সনাক্ত করতে ls কমান্ডটি ব্যবহার করুন।

# sudo ls /etc/letsencrypt/live/
# sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. এনগিনেক্সে শংসাপত্র ফাইলগুলি ইনস্টল করতে এবং এসএসএল সক্ষম করতে, সম্পাদনার জন্য /etc/nginx/nginx.conf ফাইলটি খুলুন এবং সার্ভার ব্লক থেকে শেষ শোনার লাইনের পরে নীচের বিবৃতিগুলি যুক্ত করুন। গাইড হিসাবে নীচের চিত্র ব্যবহার করুন।

# vi /etc/nginx/nginx.conf

এনগিনেক্স এসএসএল ব্লক অংশ:

# SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

আপনার নিজের ডোমেনের সাথে মেলে এসএসএল শংসাপত্রগুলির জন্য ডোমেন নেম স্ট্রিং প্রতিস্থাপন করুন।

১১. অবশেষে, এনগিনেক্স পরিষেবা পুনরায় চালু করুন এবং https:/yourdomain এ HTTPS প্রোটোকলের মাধ্যমে আপনার ডোমেনটি দেখুন। পৃষ্ঠার কোনও শংসাপত্রের ত্রুটি ছাড়াই মসৃণ লোড করা উচিত।

# systemctl restart nginx
# service nginx restart

12. এসএসএল/টিএলএস শংসাপত্র এবং এর সরলতা যাচাই করতে নীচের লিঙ্কটি দেখুন:

https://www.ssllabs.com/ssltest/analyze.html 

১৩. আপনি যদি কোনও বিজ্ঞপ্তি পান যে আপনার সার্ভারটি দুর্বল ডিএইচ কী এক্সচেঞ্জ এবং বি গ্রেডের সামগ্রিক রেটিং সমর্থন করে, লগজাম আক্রমণ থেকে আপনার সার্ভারকে রক্ষা করার জন্য/etc/nginx/ssl/ডিরেক্টরিতে একটি নতুন ডিফি-হেলম্যান সিফার তৈরি করুন নিম্নলিখিত কমান্ড চলমান।

# mkdir /etc/nginx/ssl
# cd /etc/nginx/ssl
# openssl dhparam -out dhparams.pem 4096

এই উদাহরণে আমরা একটি 4096 বিট কী ব্যবহার করেছি, যা প্রকৃতপক্ষে উত্পন্ন করতে অনেক সময় নেয় এবং আপনার সার্ভার এবং এসএসএল হ্যান্ডশেকটিতে একটি অতিরিক্ত ওভারহেড রাখে।

এই দীর্ঘায়িত কোনও কী ব্যবহার করার কোনও স্পষ্ট প্রয়োজন নেই এবং আপনি ভৌত হতে না চাইলে আপনার 2048 বিট কী দিয়ে নিরাপদ থাকা উচিত।

১৪. ডিএইচ কী উত্পন্ন হওয়ার পরে, এনগিনক্স কনফিগারেশন ফাইলটি খুলুন এবং ডিএইচ কী যুক্ত করতে এবং আপনার ডোমেনের সুরক্ষা স্তরটিকে A + গ্রেড

# vi /etc/nginx/nginx.conf

Nginx.conf- এ নিম্নলিখিত ব্লক অংশগুলি যুক্ত করুন:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. পরিবর্তনগুলি প্রয়োগ করতে এবং আপনার উল্লিখিত লিঙ্কটি থেকে পূর্ববর্তী ফলাফলের ক্যাশে সাফ করে আপনার এসএসএল শংসাপত্রটির পুনরায় পরীক্ষা করতে Nginx পরিষেবাটি পুনরায় চালু করুন।

# systemctl restart nginx
# service nginx restart

পদক্ষেপ 5: অ্যান্টি এনগিনেক্স বিনামূল্যে এনক্রিপ্ট এসএসএল শংসাপত্রগুলি পুনর্নবীকরণ করুন

16. আসুন এর এনক্রিপ্ট CA 90 দিনের জন্য কার্যকর এসএসএল/টিএলএস শংসাপত্র প্রকাশ করে। নীচের কমান্ডগুলি জারি করে আপনার ওয়েব সার্ভারটি বন্ধ না করেই ওয়েবরুট প্লাগইন ব্যবহার করে শংসাপত্রগুলি ম্যানুয়ালি পুনর্নবীকরণ এবং মেয়াদ শেষ হওয়ার আগে প্রয়োগ করা যেতে পারে:

# ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/usr/share/nginx/html/ -d yourdomain.tld -d www.yourdomain.tld
# systemctl reload nginx

উপরের কমান্ডটি চালনার সময় নিশ্চিত হয়ে নিন যে আপনি Nginx রুট স্টেটমেন্ট দ্বারা নির্দিষ্ট আপনার ওয়েব সার্ভার ডকুমেন্ট রুটের সাথে মেলে ওয়েবরুট-পাথ প্রতিস্থাপন করেছেন।

১../ইউএসআর/লোকাল/বিন/ডিরেক্টরিতে গিথুব ইরিকাহিদী থেকে এই ব্যাশ স্ক্রিপ্টটি তৈরি করার আগে শংসাপত্রটিকে স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ করতে এবং নীচের বিষয়বস্তু যুক্ত করুন (স্ক্রিপ্টটি এটি Nginx সেটিংস প্রতিফলিত করার জন্য সামান্য পরিবর্তিত হয়েছে)।

# vi /usr/local/bin/cert-renew

শংসাপত্র পুনর্নবীকরণ ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন।

#!/bin/bash

webpath='/usr/share/nginx/html/'
domain=$1
le_path='/opt/letsencrypt'
le_conf='/etc/letsencrypt'
exp_limit=30;

get_domain_list(){
        certdomain=$1
        config_file="$le_conf/renewal/$certdomain.conf"

        if [ ! -f $config_file ] ; then
                echo "[ERROR] The config file for the certificate $certdomain was not found."
                exit 1;
        fi

        domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}")
        last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}')

        if [ "${last_char}" = "," ]; then
                domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}')
        fi

        echo $domains;
}

if [ -z "$domain" ] ; then
        echo "[ERROR] you must provide the domain name for the certificate renewal."
        exit 1;
fi

cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"

if [ ! -f $cert_file ]; then
        echo "[ERROR] certificate file not found for domain $domain."
        exit 1;
fi

exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s)
datenow=$(date -d "now" +%s)
days_exp=$(echo \( $exp - $datenow \) / 86400 |bc)

echo "Checking expiration date for $domain..."

if [ "$days_exp" -gt "$exp_limit" ] ; then
        echo "The certificate is up to date, no need for renewal ($days_exp days left)."
        exit 0;
else
        echo "The certificate for $domain is about to expire soon. Starting renewal request..."
        domain_list=$( get_domain_list $domain )
"$le_path"/letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=”$webpath” --domains "${domain_list}"
        echo "Reloading Nginx..."
sudo systemctl reload nginx
        echo "Renewal process finished for domain $domain"
        exit 0;
fi

18. আপনার এনগিনেক্স ডকুমেন্টের মূলের সাথে মেলে স্ক্রিপ্টের শুরু থেকে $ওয়েবপাথ পরিবর্তনশীল প্রতিস্থাপন করুন। স্ক্রিপ্টটি কার্যকর হয়ে গেছে এবং নিম্নলিখিত কমান্ডগুলি জারি করে আপনার সিস্টেমে বিসি ক্যালকুলেটর ইনস্টল করা আছে তা নিশ্চিত করুন।

# chmod +x /usr/local/bin/cert-renew
# yum install bc

নিম্নলিখিত কমান্ড জারি করে আপনি আপনার ডোমেনের বিপরীতে স্ক্রিপ্টটি পরীক্ষা করতে পারেন:

# /usr/local/bin/cert-renew yourdomain.tld


19. পরিশেষে, শংসাপত্র পুনর্নবীকরণ প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চালানোর জন্য, প্রতি সপ্তাহে স্ক্রিপ্টটি কার্যকর করতে একটি নতুন ক্রোন জব যুক্ত করুন যাতে মেয়াদ শেষ হওয়ার তারিখের 30 দিনের মধ্যে শংসাপত্রটি আপডেট হয়।

# crontab -e

ফাইলের নীচে নিম্নলিখিত লাইনটি যুক্ত করুন।

@weekly  /usr/local/bin/cert-renew your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1

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