Let’s Encrypt یک مرجع صدور گواهی (CA) است که راه آسانی برای دریافت و نصب گواهیهای رایگان TLS/SSL فراهم میکند و HTTPS را در وبسرور فعال میکند. این فرآیند با ارایهی یک سرویس نرمافزاری به نام Certbot، که بیشتر مراحل مورد نیاز را خودکار میکند، ساده میشود. در حال حاضر، همهی فرآیند دریافت و نصب گواهی روی Apache و Nginx کاملن خودکار است.
در این راهنما، از Certbot برای دریافت گواهینامهی SSL رایگان برای Nginx در Ubuntu 20.04 و تنظیم آن برای تمدید خودکار استفاده خواهیم کرد.
پیش نیازها
-
یک سرور Ubuntu 20.04 با یک کاربر غیر root و دسترسی sudo و فایروال.
-
یک دامنه؛ در این راهنما از
استفاده میکنیم.example.com
-
تنظیم رکوردهای DNS برای دامنه و زیردامنه www با اشاره به آدرس IP عمومی سرور
-
نصب Nginx با دنبال کردن شیوه نصب Nginx در Ubuntu 20.04 و ایجاد یک بلوک سرور مانند
etc/nginx/sites-available/example.com/
گام نخست: نصب Certbot
اولین قدم برای استفاده از Let’s Encrypt و دریافت گواهی SSL نصب نرم افزار Certbot روی سرور است.
Certbot و پلاگین Nginx آن را با apt
sudo apt install certbot python3-certbot-nginx
گام دوم: بررسی پیکربندی Nginx
Certbot باید بتواند بلوک سرور یا Server Block صحیح را در پیکربندی Nginx پیدا کند تا بتواند بهطور خودکار SSL را تنظیم کند.
اگر مرحلهی راهاندازی بلوک سرور را در آموزش نصب Nginx دنبال کرده باشید، یک بلوک سرور برای دامنه تان در مسیری مانند etc/nginx/sites-available/example.com/
برای بررسی آن، فایل پیکربندی دامنه خود را با استفاده از ویرایشگر متن دلخواهتان باز کنید:
sudo nano /etc/nginx/sites-available/example.com
خط مربوط به server_name
server_name example.com www.example.com;
اگر آنچه میبینید با نام دامنهتان یکسان است، از ویرایشگر خود خارج شوید و به مرحلهی بعد بروید. اگر اینطور نیست، آن را به روز کنید تا با دامنه مطابقت داشته باشد.
سپس فایل را ذخیره کنید، از ویرایشگر خود خارج شوید و پیکربندیتان را بررسی کنید:
sudo nginx -t
اگر خطایی دریافت کردید، فایل بلوک سرور را دوباره باز کنید و اشتباههای تایپی یا خطاها را بررسی کنید. هنگامی که فایل پیکربندی شما درست شد، Nginx را ریلود کنید تا پیکربندی جدید لود شود:
sudo systemctl reload nginx
Certbot اکنون میتواند بلوک صحیح را پیدا کرده و بهطور خودکار آن را به روز کند.
گام سوم: تنظیمات فایروال
اگر فایروال ufw
میتوانید تنظیمات فعلی را با دستور زیر مشاهده کنید:
sudo ufw status
اگر خروجی بهشکل زیر بود به این معناست که فقط ترافیک HTTP به وبسرور مجاز است:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
برای اینکه علاوه بر این، ترافیک HTTPS را وارد کنید، Nginx Full را مجاز و مجوز اضافی Nginx HTTP را حذف کنید:
sudo ufw allow 'Nginx Full' sudo ufw delete allow 'Nginx HTTP'
اکنون وضعیت فایروال باید به شکل زیر باشد:
OutputStatus: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
گام چهارم: دریافت گواهی SSL
Certbot راه های مختلفی را برای دریافت گواهینامه SSL از طریق افزونهها ارایه میدهد. افزونهی Nginx پیکربندی مجدد Nginx و ریلود کردن دوبارهی پیکربندی را در زمان نیاز انجام میدهد. برای استفاده از این افزونه، عبارت زیر را تایپ کنید:
sudo certbot --nginx -d example.com -d www.example.com
توجه داشته باشید که به جای example.com باید نام دامنهی خودتان را بنویسید.
اگر این اولین باری است که certbot
certbot
در پایان این فرآیند پیامی مبنی بر موفقیت آمیز بودن به شما نمایش داده میشود.
OutputIMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-08-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - 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
اکنون میتوانید سایت خود را با //:https
برای راهنمایی بیشتر دربارهی استفاده از Certbot، میتوانید به مستندات آن مراجعه کنید.