Let’s Encrypt یک مرجع صدور گواهی (CA) است که دریافت و نصب گواهینامه های رایگان TLS/SSL ارائه می دهد و در نتیجه HTTPS رمزگذاری شده را در وب سرورها فعال می کند. این فرآیند با ارائه یک سرویس گیرنده نرم افزاری، بنام Certbot، که تلاش می کند بیشتر (اگر نه همه) مراحل مورد نیاز را خودکار کند، فرآیند را ساده می کند. در حال حاضر، کل فرآیند دریافت و نصب گواهی بر روی Apache و Nginx کاملاً خودکار است.
در این آموزش، شما از Certbot برای دریافت گواهینامه SSL رایگان برای Nginx در اوبونتو 22.04 و تنظیم گواهینامه خود برای تمدید خودکار استفاده خواهید کرد.
این آموزش از یک فایل پیکربندی سرور Nginx جداگانه به جای فایل پیش فرض استفاده می کند. ما توصیه میکنیم برای هر دامنه فایلهای Nginx جدید ایجاد کنید زیرا باعث جلوگیری از اشتباهات میشود و فایلهای پیشفرض را بهعنوان پشتیبان برای خود حفظ کنید.
پیش نیازها
-
یک سرور اوبونتو 22.04 و یک کاربر غیر روت با امتیازات sudo و یک فایروال. میتوانید برای راهنمایی آموزش راه اندازی سرور اولیه با ابونتو 22.04 ما را مطالعه کنید.
-
یک دامنه ثبت شده، در این آموزش از example.com بطور کلی استفاده خواهد شد.
-
هر دو رکورد DNS زیر برای سرور شما تنظیم شده باشد: یک رکورد با example.com که به آدرس IP سرور شما اشاره می کند. یک رکورد با www.example.com که به آدرس IP سرور شما اشاره می کند.
-
قNginx با دنبال کردن نحوه نصب Nginx در اوبونتو نصب شده است. مطمئن شوید که یک فایل سرور برای دامنه خود دارید. این آموزش از /etc/nginx/sites-available/example.com به عنوان مثال استفاده می کند.
مرحله 1 - نصب Certbot
Certbot استفاده از بسته خود بنام snap را برای نصب توصیه می کند. بستههای snap تقریباً روی همه توزیعهای لینوکس کار میکنند، اما برای مدیریت بستههای snap نیاز دارند که ابتدا snapd را نصب کرده باشید. Ubuntu 22.04 با پشتیبانی از snaps ارائه می شود، بنابراین می توانید با اطمینان از به روز بودن هسته snapd خود شروع کنید:
sudo snap install core; sudo snap refresh core
اگر روی سروری کار میکنید که قبلاً نسخه قدیمیتری از certbot را نصب کرده بود، قبل از ادامه کار باید آن را حذف کنید:
sudo apt remove certbot
پس از آن، می توانید بسته certbot را نصب کنید:
sudo snap install --classic certbot
در نهایت، میتوانید دستور certbot را از دایرکتوری snap install به مسیر خود اضافه کنید، بنابراین فقط با تایپ certbot قادر خواهید بود آن را اجرا کنید. این کار برای همه بستهها ضروری نیست، اما snapها بهطور پیشفرض معولا با هیچیک از بستههای سیستمی در تضاد نیستند:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
اکنون که Certbot را نصب کرده ایم، اجازه دهید آن را اجرا کنیم تا گواهینامه خود را دریافت کنیم.
مرحله 2 - تأیید پیکربندی Nginx
Certbot باید بتواند فایل سرور صحیح را در پیکربندی Nginx شما پیدا کند تا بتواند SSL را به طور خودکار پیکربندی کند. به طور خاص، این کار را با جستجوی یک دستورالعمل server_name انجام می دهد که با دامنه ای که برای آن درخواست گواهی می دهید مطابقت داشته باشد.
برای بررسی، فایل پیکربندی دامنه خود را با استفاده از nano یا ویرایشگر متن دلخواه خود باز کنید:
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 اکنون می تواند بلوک سرور صحیح را پیدا کرده و به طور خودکار آن را به روز کند.
در مرحله بعد، فایروال را به روز میکنیم تا ترافیک HTTPS مجاز باشد.
مرحله 3 - مجوز HTTPS از طریق فایروال
اگر فایروال ufw را فعال کرده اید، همانطور که توسط راهنماهای پیش نیاز توصیه شده است، باید تنظیمات را برای اجازه دادن به ترافیک HTTPS تنظیم کنید. خوشبختانه، Nginx پس از نصب، چند پروفایل را با ufw ثبت می کند. می توانید تنظیمات فعلی را با تایپ کردن مشاهده کنید:
sudo ufw status
احتمالاً به شکل زیر خواهد بود، به این معنی که فقط ترافیک HTTP به سرور وب مجاز است:
Output
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
وضعیت شما اکنون باید به شکل زیر باشد:
sudo 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)
در مرحله بعد، Certbot را اجرا میکنیم و گواهی های خود را دریافت کنیم.
مرحله 4 - دریافت گواهی SSL
Certbot راه های مختلفی را برای دریافت گواهینامه SSL از طریق افزونه ها ارائه می دهد. افزونه Nginx پیکربندی مجدد Nginx و بارگیری مجدد پیکربندی را در صورت لزوم انجام می دهد. برای استفاده از این افزونه، عبارت زیر را تایپ کنید:
sudo certbot --nginx -d example.com -d www.example.com
این کد، ربات certbot را با افزونه --nginx اجرا می کند و از -d برای تعیین نام دامنه ای که می خواهیم گواهینامه برای آنها معتبر باشد استفاده می کند.
هنگام اجرای دستور، از شما خواسته می شود که یک آدرس ایمیل وارد کنید و با شرایط خدمات موافقت کنید. پس از انجام این کار، باید پیامی را مشاهده کنید که به شما می گوید فرآیند موفقیت آمیز بوده و گواهینامه های شما در کجا ذخیره می شوند.
گواهیهای شما دانلود، نصب و بارگیری میشوند و پیکربندی Nginx شما اکنون به طور خودکار تمام درخواستهای وب را به https:// هدایت میکند. سعی کنید وب سایت خود را دوباره بارگیری کنید و به نشانگر امنیتی مرورگر خود توجه کنید. باید نشان دهد که سایت به درستی ایمن شده است، معمولاً با نماد قفل، اگر سرور خود را با استفاده از تست سرور SSL Labs تست کنید، نمره A می گیرد.
مرحله 5 - تأیید تمدید خودکار Certbot
گواهینامه های Let’s Encrypt فقط برای نود روز معتبر هستند. این کار برای تشویق کاربران به خودکارسازی فرآیند تمدید گواهی است. بسته certbot که ما نصب کرده ایم با افزودن یک تایمر systemd که دو بار در روز اجرا می شود و به طور خودکار هر گواهی را که ظرف سی روز پس از انقضا باشد تمدید می کند، از این موضوع مراقبت می کند. می توانید وضعیت تایمر را با systemctl آگاه شوید:
sudo systemctl status snap.certbot.renew.service
برای آزمایش فرآیند تمدید، میتوانید اجرا کنید:
sudo certbot renew --dry-run
اگر هیچ خطایی مشاهده نمیکنید، همه چیز آماده است. در صورت لزوم، Certbot گواهیهای شما را تمدید میکند و Nginx را دوباره بارگیری میکند تا تغییرات را دریافت کند. اگر فرآیند تمدید خودکار شکست بخورد، Let’s Encrypt پیامی به ایمیلی که مشخص کردهاید ارسال میکند و به شما هشدار میدهد زمانی که گواهی شما در شرف انقضا است
در این آموزش ما Let’s Encrypt را نصب کرده و گواهینامه های SSL را برای دامنه خود دانلود کرده ایم، Nginx را برای استفاده از این گواهی ها پیکربندی کرده ایم و تمدید خودکار گواهی را تنظیم کرده ایم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
آموزش های مرتبط: