راهنمای گام به گام نصب گواهینامه Let’s Encrypt بر روی Nginx
حامد سعیدی در توییتر از من و تعداد دیگری از دوستان دعوت کرد تا در چالش آموزش نصب گواهینامه رایگان Let’s Encrypt شرکت کنیم. سعی کردم این آموزش را ویدیوی انجام بدم ولی موفق نشدم چون بعد از کلی تلاش متوجه شدم صدام ضبط نشده و البته که تنبلی هم فشار آورد، در نتیجه به صورت نوشتار در این بلاگ آموزش را منتشر میکنم.
فرض میکنم که خوانندگان این مطلب با مفاهیم اولیه شامل کار با Ubuntu، ترمینال و Nginx آشنا هستند.
پیشنیازها
قبل از شروع به کار اطمینان پیدا کنید که موارد زیر به درستی پیکره بندی شدند:
- به سیستم عامل(که در این آموزشUbuntu 18.04 است) دسترسی root دارید.
- درگاه ۴۴۳ را برای هدایت ترافیک HTTPS باز است.
- نام دامنه خودتان را ثبت کردید و تنظیمات اتصال آن به DNS را به درستی انجام دادید به طوری که با نام دامنه میتوانید سایت خود را ببینید. در این آموزش نام دامنه rashidi.io فرض شده است.
- برای rashidi.io و www.rashidi.io رکوردهای مناسب را ثبت کنید به طوری که با هر دو نشانی سایت در دسترس باشند.
شروع نصب
مرحله اول: نصب ربات نصب کننده گواهینامه(Certbot)
در اولین مرحله باید ربات نصب کننده گواهینامه(Certbot) را به مجموعه مخازن(Repository) خود اضافه کنید. این کار را با فرمان زیر انجام دهید:
sudo add-apt-repository ppa:certbot/certbot
بعد از آن شما نیاز دارید تا افزونه مربوط به Nginx را با فرمان زیر نصب کنید:
sudo apt install python3-certbot-nginx
هم اکنون ربات نصب کننده گواهینامه Let’s Encrypt آماده نصب است و شما باید تغییراتی کوچکی در فایل پیکره بندی Nginx بدهید.
مرحله دوم: تنظیمات Nginx
فایل تنظیمات پیگره بندی Nginx را باز کنید و برای پارامتر server_name عبارت درست را وارد کنید. فرض میکنیم فایل تنظیمات Nginx در مسیر /etc/nginx/sites-available/ است که البته بستگی به تنظیمات سرور شما ممکن است این مسیر فرق کند، اما فرض میکنیم که شما با همان فایل پیش فرض Nginx در مسیر etc/nginx/sites-enabled/default کار میکنید. این فایل را با یک ویرایشگر متنی مانند vi و با فرمان زیر باز کنید:
sudo vi /etc/nginx/sites-enabled/default
حالا عبارت server_name را پیدا کنید و در برابرش نام دامنه خود را یکبار با www و بار دیگر بدون آن بنویسید. مانند:
server_name example.com www.example.com;
فایل را ذخیره کنید و خارج شوید. حالا با فرمان زیر آزمایش کنید تا مطمین شوید فرمت کلی دستورات فایل پیکربندی Nginx درست است.
sudo nginx -t
اگر هیچ خطایی مشاهده نکردید، با فرمان زیر موتور Nginx را مجددا راه اندازی(Reset) کنید.
sudo systemctl reload nginx
مرحله سوم: دریافت گواهینامه
ربات نصب کننده گواهینامه با فرمان زیر گواهینامه مورد نیاز شما را ایجاد خواهد کرد و به صورت خودکار تنظیمات Nginx را انجام خواهد داد.
sudo certbot --nginx -d example.com -d www.example.com
توضیح پارامترها:
- nginx به ربات نصب کننده گواهینامه میگوید که ما میخواهیم از وبسرور Nginx استفاده کنیم و باید تنظیمات آن را به روز کند.
- d به ربات نصب کننده گواهینامه میگوید که گواهینامه برای کدام دامنهها باید نصب شود.
اگر برای اولین بار است که این گواهینامه را نصب میکنید ایمیل شما را خواهد پرسید و همچین درخواست میکند تا توافقنامه استفاده از گواهینامه را امضا کنید. همچنین از شما اجاره میگیرد تا ایمیل شما را با بنیاد مرزهای الکترونیکی(EFF) به اشتراک بگذارد یا خیر. این بنیاد سازنده ربات نصب کننده گواهینامه و یکی از حامیان اصلی پروژه Let’s Encrypt است. یکی از مهمترین پرسشهایی که از شما پرسیده خواهد شد در مورد هدایت خودکار سایت بر روی HTTPS است:
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
۱: No redirect - Make no further changes to the webserver configuration.
۲: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
توصیه اکید میکنم که در جواب این پرسش گزینه ۲ را انتخاب کنید تا کاربر به هر شکلی که نشانی سایت شما را وارد کرد(با HTTPS و یا بدون آن) به نسخه دارای HTTPS هدایت شود.
نکته آخر
دقت کنید که این گواهینامههای فقط ۹۰ روز دارای اعتبار هستند و بعد از آن شما باید گواهینامه خود را تمدید کنید. با دستور زیر این تمدید به صورت خودکار انجام خواهد شد
sudo certbot renew --dry-run