مقدمه
Let’s Encrypt یک مرجع صدور گواهی (CA) رایگان، خودکار و آزاد است که امکان دریافت و نصب گواهیهای TLS/SSL را برای فعالسازی پروتکل امن HTTPS روی وبسرورها فراهم میکند. این فرآیند به کمک ابزارهای خودکاری مانند Certbot بسیار ساده و سریع انجام میشود.
در این آموزش، نحوه استفاده از Certbot جهت نصب گواهی رایگان SSL برای وبسرور Apache روی Rocky Linux 9 / AlmaLinux 9 را مرور میکنیم. همچنین فرآیند تمدید خودکار گواهی را با استفاده از کرونجاب (Cron Job) تنظیم خواهیم کرد.
پیشنیازها
پیش از شروع مراحل، مطمئن شوید موارد زیر را آماده کردهاید:
-
یک سرور ابری با سیستمعامل Rocky Linux 9 یا AlmaLinux 9 همراه با دسترسی کاربر
sudo(میتوانید سرور ابری خود را از پارمین کلود تهیه کنید). -
وبسرور Apache که روی سرور نصب شده و Virtual Host برای دامنه شما پیکربندی شده باشد (برای مثال فایل
/etc/httpd/conf.d/example.com.conf). -
مالکیت یا دسترسی به یک دامنه ثبتشده.
-
تنظیم 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 رمزنگاری میشود.
نظرات کاربران