در این آموزش نحوه ایمن کردن Nginx با Let’s Encrypt در Ubuntu و Debian را بررسی خواهیم کرد! همچنین نحوه تولید و نصب گواهینامه رایگان SSL/TLS صادر شده توسط Let’s Encrypt CA برای وب سرور Nginx در اوبونتو یا دبیان را مورد بحث قرار خواهیم داد.
فهرست مطالب
آموزش ایمن کردن 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
اکنون زمان اجرای 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 یا اعلامیه های فوری استفاده می کند.
با زدن کلید Enter با شرایط مجوز موافقت کنید.
در نهایت، اگر همه چیز با موفقیت پیش رفت، باید پیامی مشابه تصویر زیر در کنسول ترمینال شما ظاهر شود.
مرحله 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
سپس فایل 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;
بر این اساس مقادیر نام دامنه را برای گواهینامه های SSL جایگزین کنید.
در مرحله بعدی یک رمز قوی Diffie-Hellman در پوشه /etc/nginx/ssl/ ایجاد کنید تا با اجرای دستورات زیر از سرور خود در برابر حمله Logjam محافظت کنید.
sudo mkdir /etc/nginx/ssl cd /etc/nginx/ssl sudo openssl dhparam -out dhparams.pem 2048
در نهایت، Nginx daemon را مجددا راه اندازی کنید تا تغییرات را منعکس کند.
sudo systemctl restart nginx
و گواهی SSL خود را با مراجعه به URL زیر تست کنید.
https://www.ssllabs.com/ssltest/analyze.html
مرحله 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 شما اکنون محتوای SSL را با استفاده از گواهی رایگان Let’s Encrypt SSL ارائه می کند. امیدوارم این مقاله برایتان مفید بوده باشد. نظرات خود را از طریق فرم زیر با ما به اشتراک بگذارید.
سوالات متداول:
آیا Let’s encrypt به اندازه کافی ایمن است؟
let’s encrypt یک مرجع صدور گواهینامه جدید است که گواهینامه های رایگان SSL را ارائه می دهد و به اندازه گواهی های پولی ایمن هستند.