همانطور که میدانید ، Let’s Encrypt یک سرویس متن باز برای ارائه SSL میباشد که از زمان ارائه آن مورد استقبال کاربران قرار گرفته است.
این سرویس که مبتنی بر یک ربات میباشد ، قادر است بر روی اکثریت سرویسهای لینوکسی ، ویندوزی و … که سرویس وب را ارائه میدهند نصب شده و به طور رایگان آنها را امن سازد.
لزوم استفاده از SSL امروزه بیش از پیش به چشم میخورد و با اعلام شرکتهایی مانند گوگل ، زمان استفاده از http به پایان رسیده و پشتیبانی از آن برای نمایش به کاربران کم کم از رده خارج میشود. بنابراین در این مطلب نیز ما تصمیم گرفتیم به آموزش نصب Let’s Encrypt بر روی Nginx در ابونتو 18 پرداخته تا در صورتی که شما از وب سرور Nginx برای ارائه سرویس وب خود بهره میبرید ، بتوانید به سادگی و تنها با وارد کردن چند دستور ساده ، وب خود را از حالتHTTP به HTTPS تبدیل نمایید.
آموزش نصب Let’s Encrypt بر روی Nginx در ابونتو 18
آمادهسازی ابونتو برای نصب Let’s Encrypt
1- برای امنسازی Nginx ، ابتدا باید وب سرور Nginx بر روی سرور ابونتو شما نصب شده باشد.
در صورتی که این سرویس را نصب نکردهاید ، از طریق آموزش نصب Nginx بر روی ابونتو 18 ، آن را نصب کرده و سپس به ادامه مطالعه این آموزش بپردازید.
2- پس از نصب Nginx ، دستور زیر را وارد کرده تا مخزن Let’s Encrypt بر روی ابونتو شما اضافه شود.
1 |
add-apt-repository ppa:certbot/certbot |
3- حال دستور زیر را وارد کرده تا مخازن apt آپدیت گردد.
1 |
apt update |
4- در پایان این بخش دستور زیر را وارد نمایید تا Certbot برای Nginx نصب شود.
1 |
apt install python-certbot-nginx |
خُب تا بدین جا موفق به نصب Certbot (پکیج Let’s Encrypt) شدهاید ، در ادامه به تنظیمات Nginx برای قبول کردن و تأیید آن میپردازیم.
تنظیمات Let’s Encrypt در Nginx
تمامی سایتهای قرار گرفته بر روی Nginx ، در دایرکتوری etc/nginx/sites-available/ قرار میگیرد ، بنابراین اگر سایت ما با دامنه simmin.net فعال باشد ، باید مسیری به این شکل را به عنوان فایل تنظیمات آن داشته باشیم.
1 |
/etc/nginx/sites-available/simmin.net |
بنابراین در ابتدا دستور زیر را وارد نمایید تا تنظیمات Virtual Host دامنه باز شود.
1 |
nano /etc/nginx/sites-available/simmin.net |
نکته : به جای دامنه simmin.net باید نام دامنه خود را وارد نمایید.
سپس به دنبال عبارتی بگردید که در ابتدای آن Server_name را نوشته باشد.
1 |
server_name simmin.net www.simmin.net; |
روبهروی این عبارت ، باید بمانند عبارت بالا ، نام دامنه شما به همراه www نوشته شده باشد ، اگر به این شکل بود فایل را بسته و به ادامه مطلب بپردازید ، در غیر این صورت عبارتهای مشابه را وارد کرده و سپس فایل را ذخیره نمایید.
نکته : در صورتی که عبارت بالا را به صورت دستی وارد کردید ، دستور زیر را وارد نمایید تا تنظیمات Nginx و اطلاعات وارد شده شما یک بار تست و چک گردد.
1 |
nginx –t |
در پایان این تنظیمات ، سرویس nginx را با دستور زیر ریلود کنید.
1 |
systemctl reload nginx |
تنظیم دسترسی https در فایروال
قبل از اینکه به تنظیم و دریافت SSL برای Nginx بپردازیم ، نیاز است که شما پورت https را بر روی فایروال خود اضافه کرده تا بتوانید از طریق آن به دریافت SSL و همچنین نمایش سایت خود با پروتکل Https بپردازید.
برای اضافه کردن پورت Https دستور زیر را وارد نمایید.
1 |
ufw allow 'Nginx Full' |
سپس دستور زیر را وارد کرده تا پورت http به صورت اشتباه دو بار در فایروال باز نگردد و دچار خطا نشود.
1 |
ufw delete allow 'Nginx HTTP' |
نکته : هنگامی که شما Nginx Full را بر روی UFW باز میکنید ، هر دو پروتکل https و http برای این سرویس باز میشود و نیازی نیست یک رول اضافی برای http تنظیم شود.
برای اطمینان از وضعیت رول تنظیم شده ، دستور زیر را وارد کرده وضعیت UFW را مشاهده نمایید.
1 |
ufw status |
پس از وارد کرده دستور ، خروجی باید به شکل زیر باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Output Status: active To Action From — —— —- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6) |
دریافت گواهینامه SSL
در آخرین مرحله از این آموزش ، نوبت به دریافت SSL رسیده است و با تنظیماتی که تا به این لحظه انجام دادهاید ، تنها نیاز است دستور دریافت SSL را وارد کرده تا گواهینامه امنیتی SSL دریافت و نصب گردد.
نکته مهم : توجه داشته باشید که برای دریافت SSL از طریق Let’s Encrypt باید نام دامنه و یا رکورد مورد نظر در DNS دامنه شما به سرور فعلی اشاره داشته باشد تا SSL دریافت گردد.
بنابراین دستور زیر را وارد کنید تا ربات Let’s Encrypt به صورت خودکار به دریافت و نصب SSL بپردازد.
1 |
certbot --nginx -d simmin.net -d www.simmin.net |
پس از وارد کردن دستور بالا ، یک آدرس ایمیل و همچنین تأیید Lisence را از شما درخواست خواهد کرد که هر دو مرحله را با وارد کردن یک ایمیل معتبر و تأیید لایسنس رد کنید.
سپس عبارتی مشابه عبارت زیر به شما نمایش داده خواهد شد که مبنی بر این است که تنظیمات ریدایرکت به HTTPS به صورت خودکار بر روی Nginxانجام پذیرد یا خیر؟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Output Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ——————————————————————————- 1: No redirect – Make no further changes to the webserver configuration. 2: 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): |
در صورتی که میخواهید تنظیمات ریدایرکت Http به Https انجام پذیرد عدد 2 را وارد کرده و در غیر این صورت عدد 1 را وارد و اینتر را بزنید.
پس از پایان عملیات دستور Certbot و موفقیت در دریافت SSL ، عبارتی مشابه زیر برای شما نمایش داده خواهد شد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Output IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/simmin.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/simmin.net/privkey.pem Your cert will expire on 2018-07-23. 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” – Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. – 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 |
بدین ترتیب SSL با موفقیت بر روی Nginx و سایت شما نصب و فعال شده است و شما قادر خواهید بود از این پس وب سایت خود را با HTTPS مشاهده نمایید.
حال برای تأیید و همچنین renew گواهینامه امنیتی خود میتوانید دستور زیر را وارد نمایید.
1 |
certbot renew --dry-run |
نکته : گواهینامه امنیتی Let’s Encrypt به صورت 90 روزه صادر میشود و شما نیاز است قبل از به پایان رسیدن این زمان ، دستور بالا را وارد کرده تا یک بار دیگرگواهینامه امنیتی SSL شما Renew شود. همچنین شما میتوانید دستور بالا را در یک کرون قرار داده تا به صورت خودکار Certificate شما را Renew نماید.
ارسال پاسخ