آموزش ایمن‌سازی وب‌سرور Apache با Let’s Encrypt در Rocky Linux 9 / AlmaLinux 9

مقدمه

Let’s Encrypt یک مرجع صدور گواهی (CA) رایگان، خودکار و آزاد است که امکان دریافت و نصب گواهی‌های TLS/SSL را برای فعال‌سازی پروتکل امن HTTPS روی وب‌سرورها فراهم می‌کند. این فرآیند به کمک ابزارهای خودکاری مانند Certbot بسیار ساده و سریع انجام می‌شود.

در این آموزش، نحوه استفاده از Certbot جهت نصب گواهی رایگان SSL برای وب‌سرور Apache روی Rocky Linux 9 / AlmaLinux 9 را مرور می‌کنیم. همچنین فرآیند تمدید خودکار گواهی را با استفاده از کرون‌جاب (Cron Job) تنظیم خواهیم کرد.

پیش‌نیازها

پیش از شروع مراحل، مطمئن شوید موارد زیر را آماده کرده‌اید:

  1. یک سرور ابری با سیستم‌عامل Rocky Linux 9 یا AlmaLinux 9 همراه با دسترسی کاربر sudo (می‌توانید سرور ابری خود را از پارمین کلود تهیه کنید).

  2. وب‌سرور Apache که روی سرور نصب شده و Virtual Host برای دامنه شما پیکربندی شده باشد (برای مثال فایل /etc/httpd/conf.d/example.com.conf).

  3. مالکیت یا دسترسی به یک دامنه ثبت‌شده.

  4. تنظیم DNS A Record که دامنه شما را به آدرس IP عمومی سرور ابری‌تان اشاره دهد. (برای مثال example.com و [www.example.com](https://www.example.com)).

گام اول — نصب Certbot و ماژول mod_ssl

برای دریافت گواهی SSL از Let’s Encrypt، ابتدا باید ابزار Certbot و ماژول mod_ssl (که پشتیبانی از رمزنگاری SSL/TLS را به Apache اضافه می‌کند) را نصب کنیم.

پکیج Certbot در مخازن پیش‌فرض سیستم‌عامل قرار ندارد، بنابراین ابتدا مخزن EPEL را فعال می‌کنیم:

Bash

sudo dnf install epel-release -y

اکنون پکیج‌های مورد نیاز را به همراه پایتون و ابزارهای مرتبط نصب می‌کنیم:

Bash

sudo dnf install certbot python3-certbot-apache mod_ssl -y

💡 نکته سرعت برای توسعه‌دهندگان: در صورت نیاز به نصب مستقیم پکیج‌ها و ماژول‌های پایتونی Certbot از طریق pip روی سرورهای پارمین کلود، می‌توانید از میرور اختصاصی زیر جهت دور زدن تحریم‌ها و افزایش سرعت بهره ببرید:

Bash

pip install --index-url https://pypi.parmincloud.ir/simple/ certbot

گام دوم — دریافت و تنظیم گواهی SSL

پس از نصب Certbot، می‌توانیم گواهی SSL را برای دامنه خود دریافت کنیم. ابزار Certbot به‌صورت خودکار پیکربندی Apache را تغییر داده و گواهی را اعمال می‌کند.

برای دریافت گواهی تعاملی برای یک دامنه مشخص، دستور زیر را اجرا کنید:

Bash

sudo certbot --apache -d example.com

اگر می‌خواهید یک گواهی واحد برای چند دامنه یا ساب‌دامنه (مثلاً نسخه با www و بدون www) دریافت کنید، آن‌ها را با سویچ -d اضافه کنید:

Bash

sudo certbot --apache -d example.com -d www.example.com

همچنین می‌توانید دستور را بدون مشخص کردن دامنه اجرا کنید تا Certbot دامنه‌های فعال روی Virtual Hostهای Apache را شناسایی کرده و به شما پیشنهاد دهد:

Bash

sudo certbot --apache

در طول فرآیند، Certbot از شما یک آدرس ایمیل برای اطلاع‌رسانی تمدیدها می‌خواهد و شرایط استفاده از خدمات را دریافت می‌کند.

پس از اتمام موفقیت‌آمیز، خروجی مشابه زیر دریافت خواهید کرد:

Plaintext

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2026-10-20. 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"

فایل‌های گواهی در مسیر /etc/letsencrypt/live/[example.com/](https://example.com/) ذخیره می‌شوند.

گام سوم — بررسی صحت عملکرد SSL

برای اطمینان از سلامت گواهی SSL و کانفیگ صحیح وب‌سرور، می‌توانید از ابزار آنلاین Qualys SSL Labs استفاده کنید.

آدرس زیر را در مرورگر خود باز کنید (به جای example.com دامنه خود را بنویسید):

Plaintext

https://www.ssllabs.com/ssltest/analyze.html?d=example.com

پس از چند دقیقه تحلیل، این ابزار به تنظیمات امنیتی سرور شما امتیازی از A+ تا F می‌دهد. کانفیگ پیش‌فرض معمولاً رتبه A را کسب می‌کند.

همچنین می‌توانید وب‌سایت خود را با https:// باز کرده و علامت قفل سبز/امنیتی را در کنار آدرس مرورگر مشاهده کنید.

گام چهارم — تنظیم تمدید خودکار (Auto Renewal)

گواهی‌های Let’s Encrypt اعتبار ۹۰ روزه دارند، اما توصیه می‌شود فرآیند بررسی و تمدید آن‌ها به‌صورت خودکار هر روز انجام شود تا قبل از رسیدن به ۳۰ روز پایانی، گواهی جدید جایگزین شود.

برای تست عملکرد تمدید بدون ایجاد تغییر واقعی، دستور زیر را اجرا کنید:

Bash

sudo certbot renew --dry-run

اگر خروجی شامل پیام Congratulations, all renewals succeeded بود، یعنی فرآیند تمدید بدون مشکل کار می‌کند.

ساخت Cron Job برای تمدید خودکار

برای اینکه نیازی به تمدید دستی نباشد، یک کرون‌جاب تعریف می‌کنیم تا روزانه دوبار دستور تمدید را اجرا کند:

Bash

echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

این دستور باعث می‌شود سرور شما در ساعت‌های ۱۲ شب و ۱۲ ظهر به صورت خودکار تمدید گواهی را بررسی کند. کد پایتون اضافه شده باعث ایجاد یک تاخیر تصادفی (بین ۰ تا ۶۰ دقیقه) می‌شود تا از فشار هم‌زمان بر روی سرورهای Let’s Encrypt جلوگیری کند.

جمع‌بندی

شما با موفقیت ابزار Certbot را نصب کرده، گواهی امنیتی SSL را برای دامنه خود دریافت کردید و فرآیند تمدید خودکار آن را روی سرور ابری پارمین کلود تنظیم نمودید. اکنون تمامی ارتباطات کاربران با وب‌سایت شما بر روی بستر امن HTTPS رمزنگاری می‌شود.

Click to rate this post!
[Total: 0 Average: 0]

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

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *