Let’s Encrypt یک مرجع صدور گواهی (CA) است که راهی در دسترس برای دریافت و نصب گواهیهای TLS/SSL رایگان فراهم میکند و بدینترتیب رمزگذاری HTTPS را روی وبسرورها ممکن میسازد. این سرویس با ارائه کلاینت نرمافزاری Certbot فرایند را ساده میکند و تلاش میکند اکثر (یا تمام) مراحل مورد نیاز را خودکار کند. در حال حاضر فرایند دریافت و نصب گواهی روی هر دو وبسرور Apache و Nginx بهصورت کامل قابل خودکار شدن است.
خلاصهٔ راهنما
در این آموزش از Certbot برای دریافت یک گواهی SSL رایگان برای Nginx روی اوبونتو استفاده میکنیم و گواهی را بهگونهای تنظیم میکنیم که بهطور خودکار تمدید شود.
این آموزش از یک فایل پیکربندی مجزا برای Nginx بهجای فایل پیشفرض استفاده میکند. ما توصیه میکنیم برای هر دامنه فایلهای server block جدیدی ایجاد کنید زیرا این روش خطاهای رایج را کاهش میدهد و فایلهای پیشفرض را بهعنوان یک پشتیبان نگه میدارد.
پیشنیازها
- یک سرور اوبونتو، شامل یک کاربر غیرریشه با دسترسی sudo و یک فایروال فعال.
- یک نام دامنه ثبتشده. در این آموزش از example.com استفاده شده است. میتوانید دامنه از هر رجیسترار دلخواه تهیه کنید.
- وجود رکوردهای DNS مناسب که به سرور شما اشاره کنند. اگر از ParminCloud استفاده میکنید، مستندات DNS پارمین کلود را بررسی کنید.
- Nginx نصبشده و داشتن یک server block برای دامنهٔ شما. در این آموزش از
/etc/nginx/sites-available/example.comبهعنوان مثال استفاده میشود.
نصب Certbot
Certbot استفاده از بستهٔ snap را توصیه میکند. بستههای snap روی اکثر توزیعهای لینوکس کار میکنند، اما نیازمند نصب snapd برای مدیریت بستههای snap هستند. اوبونتو بهصورت پیشفرض از snap پشتیبانی میکند، بنابراین میتوانید با اطمینان از بهروز بودن snapd شروع کنید.
اگر روی سرور شما نسخهٔ قدیمیتری از certbot نصب بوده است، پیش از ادامه باید آن را حذف کنید.
سپس میتوانید بستهٔ certbot را نصب کنید.
در نهایت میتوانید دستور certbot را از مسیر نصب snap به PATH خود لینک کنید تا فقط با تایپ certbot بتوانید آن را اجرا کنید. این کار با همهٔ بستهها ضروری نیست، اما snapها بهطور پیشفرض کمتر تهاجمی عمل میکنند تا با بستههای سیستم تداخلی نداشته باشند.
آمادهسازی Nginx برای Certbot
Certbot باید بتواند server block صحیح را در پیکربندی Nginx پیدا کند تا بتواند بهصورت خودکار پیکربندی SSL را انجام دهد. بهطور مشخص، Certbot دنبال دستور server_name میگردد که با دامنهای که برای دریافت گواهی درخواست میکنید مطابقت داشته باشد.
اگر مرحلهٔ راهاندازی server block در آموزش نصب Nginx را دنبال کرده باشید، باید فایل server block دامنهٔ شما در /etc/nginx/sites-available/example.com وجود داشته و دستور server_name بهدرستی تنظیم شده باشد.
برای بررسی، فایل پیکربندی دامنه را با nano یا ویرایشگر دلخواه خود باز کنید:
/etc/nginx/sites-available/example.com
خط server_name موجود را پیدا کنید. باید شبیه به این باشد:
server_name example.com www.example.com;
اگر چنین است، ویرایشگر را ببندید و به مرحلهٔ بعد بروید. اگر نیست، آن را به مقدار مناسب بهروزرسانی کنید، سپس فایل را ذخیره و ببندید و سینتکس پیکربندی را بررسی کنید:
sudo nginx -t
اگر خطایی دریافت کردید، فایل server block را دوباره باز کنید و برای یافتن تایپو یا کاراکترهای گمشده بررسی کنید. وقتی سینتکس صحیح شد، Nginx را برای بارگذاری پیکربندی جدید ریلود کنید:
sudo systemctl reload nginx
اکنون Certbot باید سرور بلاک درست را پیدا کرده و آن را بهصورت خودکار بهروزرسانی کند.
تنظیم فایروال برای HTTPS
اگر فایروال ufw را فعال کردهاید، همانطور که در پیشنیازها توصیه شده است، باید تنظیمات را برای اجازهٔ ترافیک HTTPS تنظیم کنید. Nginx چند پروفایل را هنگام نصب با ufw ثبت میکند.
میتوانید وضعیت فعلی را با تایپ کردن مشاهده کنید:
sudo ufw status
بهاحتمال زیاد فقط ترافیک HTTP مجاز است:
To Action From
-- ------ ----
Nginx HTTP ALLOW Anywhere
برای اجازهٔ ترافیک HTTPS، پروفایل Nginx Full را فعال و پروفایل Nginx HTTP تکراری را حذف کنید:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
وضعیت شما اکنون باید شبیه به این باشد:
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
اجرای Certbot و دریافت گواهی
Certbot راههای متنوعی برای دریافت گواهی از طریق پلاگینها فراهم میکند. پلاگین Nginx کار پیکربندی مجدد Nginx و بارگذاری مجدد تنظیمات را در صورت لزوم انجام میدهد. برای استفاده از این پلاگین دستور زیر را اجرا کنید:
sudo certbot --nginx -d example.com -d www.example.com
این دستور certbot را با پلاگین --nginx اجرا میکند و از -d برای مشخص کردن نامهای دامنهای که گواهی باید برای آنها معتبر باشد استفاده میکند.
در هنگام اجرای دستور، از شما خواسته میشود یک آدرس ایمیل وارد کنید و با شرایط خدمات موافقت کنید. پس از انجام این مراحل باید پیامی ببینید که فرایند موفقیتآمیز بوده و محل ذخیرهٔ گواهیها را نشان میدهد:
گواهیها دانلود، نصب و بارگذاری شدهاند و پیکربندی Nginx شما اکنون بهطور خودکار تمام درخواستها را به https:// هدایت میکند. سایت خود را بارگذاری کنید و نشانگر امنیت مرورگر را بررسی کنید؛ باید نشان دهد سایت بهدرستی ایمن شده است، معمولاً با یک آیکون قفل. اگر سرور خود را با تست SSL Labs بررسی کنید، نمرهٔ A دریافت خواهید کرد.
آزمایش فرایند تمدید خودکار
گواهیهای Let’s Encrypt تنها برای نود روز اعتبار دارند. این کار برای تشویق کاربران به خودکارسازی روند تمدید گواهیها انجام میشود. بستهٔ certbot که نصب کردهاید، یک timer در systemd اضافه میکند که دو بار در روز اجرا شده و هر گواهیای که کمتر از سی روز به انقضا مانده باشد را بهصورت خودکار تمدید میکند.
میتوانید وضعیت این timer را با systemctl بررسی کنید:
systemctl list-timers | grep certbot
برای آزمون فرایند تمدید، میتوانید یک dry run با certbot انجام دهید:
sudo certbot renew --dry-run
اگر هیچ خطایی مشاهده نکردید، همهچیز آماده است. در صورت لزوم Certbot گواهیها را تمدید کرده و Nginx را برای اعمال تغییرات ریلود خواهد کرد. اگر فرایند خودکار تمدید هرگاه با خطا مواجه شود، Let’s Encrypt ایمیلی به آدرسی که مشخص کردهاید ارسال خواهد کرد و دربارهٔ نزدیک شدن تاریخ انقضا هشدار میدهد.
جمعبندی
در این آموزش، کلاینت Let’s Encrypt یعنی Certbot را نصب کردید، گواهیهای SSL را برای دامنهٔ خود دانلود و نصب نمودید، Nginx را برای استفاده از این گواهیها پیکربندی کردید و تمدید خودکار گواهیها را راهاندازی کردید. برای سوالات بیشتر دربارهٔ استفاده از Certbot، مستندات رسمی آن یک منبع خوب برای شروع است: https://certbot.eff.org/docs/.
از اینکه با پارمین کلود همراهید متشکریم.
برای اطلاعات بیشتر دربارهٔ محصولات ما به سایت پارمین کلود مراجعه کنید.




نظرات کاربران