آموزش نصب Let’s Encrypt بر روی Nginx در ابونتو 18

نویسنده: آبتین حیدرآبادیان| دسته بندی: آموزش سرور مجازی لینوکس | نظرات: 3 نفر
آموزش نصب Let’s Encrypt بر روی Nginx در ابونتو 18
4502
11 تیر 1397
آبتین حیدرآبادیان نویسنده

در این بخش از سری مطالب آموزش ابونتو 18 و در ادامه مطلب نصب Nginx بر روی ابونتو 18 قصد داریم در این مطلب به آموزش نصب Let’s Encrypt بر روی Nginx در ابونتو 18 بپردازیم تا از این طریق بتوانید به امن‌سازی Nginx خود بپردازید.

همانطور که می‌دانید ، 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 بر روی ابونتو شما اضافه شود.

add-apt-repository ppa:certbot/certbot

3- حال دستور زیر را وارد کرده تا مخازن apt آپدیت گردد.

apt update

4- در پایان این بخش دستور زیر را وارد نمایید تا Certbot برای Nginx نصب شود.

apt install python-certbot-nginx

خُب تا بدین جا موفق به نصب Certbot (پکیج Let’s Encrypt) شده‌اید ، در ادامه به تنظیمات Nginx برای قبول کردن و تأیید آن می‌پردازیم.

تنظیمات Let’s Encrypt در Nginx

تمامی سایت‌های قرار گرفته بر روی Nginx ، در دایرکتوری etc/nginx/sites-available/ قرار می‌گیرد ، بنابراین اگر سایت ما با دامنه azarlearn.com فعال باشد ، باید مسیری به این شکل را به عنوان فایل تنظیمات آن داشته باشیم.

/etc/nginx/sites-available/azarlearn.com
  • بنابراین در ابتدا دستور زیر را وارد نمایید تا تنظیمات Virtual Host دامنه باز شود.
nano /etc/nginx/sites-available/azarlearn.com

نکته : به جای دامنه azarlearn.com باید نام دامنه خود را وارد نمایید.

  • سپس به دنبال عبارتی بگردید که در ابتدای آن Server_name را نوشته باشد.
...

server_name azarlearn.com www.azarlearn.com;

...

روبه‌روی این عبارت ، باید بمانند عبارت بالا ، نام دامنه شما به همراه www نوشته شده باشد ، اگر به این شکل بود فایل را بسته و به ادامه مطلب بپردازید ، در غیر این صورت عبارتهای مشابه را وارد کرده و سپس فایل را ذخیره نمایید.

نکته : در صورتی که عبارت بالا را به صورت دستی وارد کردید ، دستور زیر را وارد نمایید تا تنظیمات Nginx و اطلاعات وارد شده شما یک بار تست و چک گردد.

nginx –t

در پایان این تنظیمات ، سرویس nginx را با دستور زیر ریلود کنید.

systemctl reload nginx

تنظیم دسترسی https در فایروال

قبل از اینکه به تنظیم و دریافت SSL برای Nginx بپردازیم ، نیاز است که شما پورت https را بر روی فایروال خود اضافه کرده تا بتوانید از طریق آن به دریافت SSL و همچنین نمایش سایت خود با پروتکل Https بپردازید.

  • برای اضافه کردن پورت Https دستور زیر را وارد نمایید.
ufw allow 'Nginx Full'
  • سپس دستور زیر را وارد کرده تا پورت http به صورت اشتباه دو بار در فایروال باز نگردد و دچار خطا نشود.
ufw delete allow 'Nginx HTTP'

نکته : هنگامی که شما Nginx Full را بر روی UFW باز می‌کنید ، هر دو پروتکل https و http برای این سرویس باز می‌شود و نیازی نیست یک رول اضافی برای http تنظیم شود.

برای اطمینان از وضعیت رول تنظیم شده ، دستور زیر را وارد کرده وضعیت UFW را مشاهده نمایید.

ufw status

پس از وارد کرده دستور ، خروجی باید به شکل زیر باشد.

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 بپردازد.
certbot --nginx -d azarlearn.com -d www.azarlearn.com
  • پس از وارد کردن دستور بالا ، یک آدرس ایمیل و همچنین تأیید Lisence را از شما درخواست خواهد کرد که هر دو مرحله را با وارد کردن یک ایمیل معتبر و تأیید لایسنس رد کنید.
  • سپس عبارتی مشابه عبارت زیر به شما نمایش داده خواهد شد که مبنی بر این است که تنظیمات ریدایرکت به HTTPS به صورت خودکار بر روی Nginx انجام پذیرد یا خیر؟
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 ، عبارتی مشابه زیر برای شما نمایش داده خواهد شد.
Output

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/azarlearn.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/azarlearn.com/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 گواهینامه امنیتی خود می‌توانید دستور زیر را وارد نمایید.

certbot renew --dry-run

نکته : گواهینامه امنیتی Let’s Encrypt به صورت 90 روزه صادر می‌شود و شما نیاز است قبل از به پایان رسیدن این زمان ، دستور بالا را وارد کرده تا یک بار دیگر گواهینامه امنیتی SSL شما Renew شود. همچنین شما می‌توانید دستور بالا را در یک کرون قرار داده تا به صورت خودکار Certificate شما را Renew نماید.

در پایان امیدواریم از آموزش نصب Let’s Encrypt بر روی Nginx در ابونتو 18 استفاده لازم را برده باشید.

کاربر گرامی شما می‌توانید سؤالات مربوط به این آموزش را در بخش کامنت‌ها عنوان کرده و در همین قسمت پاسخ خود را دریافت کنید و یا برای رفع مشکلات دیگر در زمینه آموزش‌های آذرآنلاین به بخش Community مراجعه کرده و مشکل خود را در آن مطرح نمایید تا در اسرع وقت کاربران دیگر و کارشناسان به سؤالات شما پاسخ دهند.