آذرسیس

How to secure Nginx with Lets Encrypt on Ubuntu and Debian
5/5 - (1 امتیاز)

در این آموزش نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian را بررسی خواهیم کرد! همچنین نحوه تولید و نصب گواهینامه رایگان SSL/TLS صادر شده توسط Let’s Encrypt CA برای وب سرور Nginx در اوبونتو یا دبیان را مورد بحث قرار خواهیم داد.

آموزش ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

پیش نیازهای نصب

  • یک دامنه ثبت شده با سوابق DNS معتبر A برای اشاره به آدرس IP سرور شما
  • یک وب سرور Nginx نصب شده با SSL و Vhost فعال، در صورتی که قصد دارید چندین دامنه یا زیر دامنه را میزبانی کنید.

مرحله 1: نصب وب سرور Nginx

در مرحله اول وب سرور Nginx را نصب کنید، اگر قبلاً نصب نشده باشد، با صدور دستور زیر نصب کنید:

sudo apt-get install nginx

 

مرحله 2: ایجاد گواهینامه Let’s Encrypt SSL برای Nginx

قبل از تولید یک گواهی رایگان SSL/TLS، نرم افزار Let’s Encrypt را در /usr/local/ سلسله مراتب سیستم فایل با کمک کلاینت git با صدور دستورات زیر نصب کنید:

sudo apt-get -y install git
cd /usr/local/
sudo git clone https://github.com/letsencrypt/letsencrypt

اگرچه روند دریافت گواهی برای Nginx خودکار است، اما همچنان می‌توانید با استفاده از افزونه Let’s Encrypt Standalone یک گواهی SSL رایگان برای Nginx ایجاد و نصب کنید.

این روش مستلزم آن است که پورت 80 نباید برای مدت کوتاهی در سیستم شما استفاده شود در حالی که مشتری Let’s Encrypt هویت سرور را قبل از تولید گواهی تأیید می کند.

اگر از قبل Nginx را اجرا می کنید، با صدور دستور زیر سرویس را متوقف کنید.

sudo service nginx stop
OR
sudo systemctl stop nginx

اگر سرویس دیگری را اجرا می کنید که به پورت 80 متصل می شود، آن سرویس را نیز متوقف کنید.

با اجرای دستور netstat، آزاد بودن پورت 80 را تأیید کنید:

sudo netstat -tlpn | grep 80

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

اکنون زمان اجرای letsencrypt برای دریافت گواهی SSL فرا رسیده است. به دایرکتوری نصب Let’s Encrypt موجود در مسیر سیستم usr/local/letsencrypt/ بروید و دستور letsencrypt-auto را با ارائه گزینه standalone– و پرچم d- برای هر دامنه یا زیر دامنه ای که می خواهید گواهی ایجاد کنید اجرا کنید.

cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly --standalone -d your_domain.tld

 

 آدرس ایمیلی را وارد کنید که Let’s Encrypt برای بازیابی lost key یا اعلامیه های فوری استفاده می کند.

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

با زدن کلید Enter با شرایط مجوز موافقت کنید.

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

در نهایت، اگر همه چیز با موفقیت پیش رفت، باید پیامی مشابه تصویر زیر در کنسول ترمینال شما ظاهر شود.

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

مرحله 3: نصب گواهی Let’s Encrypt SSL را در Nginx

اکنون که گواهی SSL شما نصب شده است، زمان آن است که وب سرور Nginx را برای استفاده از آن پیکربندی کنید. گواهی‌های SSL جدید در /etc/letsencrypt/live/ تحت فهرستی به نام دامنه شما قرار می‌گیرند. دستور ls را اجرا کنید تا فایل های گواهی صادر شده برای دامنه شما فهرست شود.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/admin.tk

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

سپس فایل etc/nginx/sites-available/default/ را با یک ویرایشگر متن باز کنید. و بلوک زیر را بعد از اولین خط نظر داده شده که شروع بلوک SSL را مشخص می کند، اضافه کنید. از اسکرین شات زیر به عنوان راهنما استفاده کنید.

sudo nano /etc/nginx/sites-enabled/default

Nginx block excerpt:

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

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

بر این اساس مقادیر نام دامنه را برای گواهینامه های SSL جایگزین کنید.

در مرحله بعدی یک رمز قوی Diffie-Hellman در پوشه /etc/nginx/ssl/ ایجاد کنید تا با اجرای دستورات زیر از سرور خود در برابر حمله Logjam محافظت کنید.

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl dhparam -out dhparams.pem 2048

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

در نهایت، Nginx daemon را مجددا راه اندازی کنید تا تغییرات را منعکس کند.

sudo systemctl restart nginx

و گواهی SSL خود را با مراجعه به URL زیر تست کنید.

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

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

مرحله 4: رمزگذاری تمدید خودکار گواهینامه های Nginx

گواهینامه های صادر شده توسط Let’s Encrypt CA به مدت 90 روز معتبر است. به منظور تمدید خودکار فایل ها قبل از تاریخ انقضا، اسکریپت bash ssl-renew.sh را در پوشه /usr/local/bin/ با محتوای زیر ایجاد کنید.

sudo nano /usr/local/bin/ssl-renew.sh

محتوای زیر را به فایل ssl-renew.sh اضافه کنید.

#!/bin/bash
cd /usr/local/letsencrypt
sudo ./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/var/www/html/ -d your_domain.tld
sudo systemctl reload nginx
exit 0

 

برای مطابقت با ریشه سند Nginx، متغیر webroot-path– را جایگزین کنید. با صدور دستور زیر مطمئن شوید که اسکریپت قابل اجرا است.

sudo chmod +x /usr/local/bin/ssl-renew.sh

در نهایت یک cron job اضافه کنید تا اسکریپت را هر دو ماه یکبار در نیمه شب اجرا کنید و اطمینان حاصل کنید که گواهی شما در حدود 30 روز قبل از منقضی شدن آن به روز می شود.

sudo crontab -e

خط زیر را در پایین فایل اضافه کنید.

0 1 1 */2 * /usr/local/bin/ssl-renew.sh >> /var/log/your_domain.tld-renew.log 2>&1

نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian

نتیجه گیری

در این آموزش نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian را بررسی خواهیم کرد! سرور Nginx شما اکنون محتوای SSL را با استفاده از گواهی رایگان Let’s Encrypt SSL ارائه می کند. امیدوارم این مقاله برایتان مفید بوده باشد. نظرات خود را از طریق فرم زیر با ما به اشتراک بگذارید.

سوالات متداول:

آیا Let’s encrypt به اندازه کافی ایمن است؟

let’s encrypt یک مرجع صدور گواهینامه جدید است که گواهینامه های رایگان SSL را ارائه می دهد و به اندازه گواهی های پولی ایمن هستند.

Share this Post

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *