فارسی (Farsi)
€EUR

گواهی SSL رایگان Let's Encrypt برای Apache روی AlmaLinux 9

3 min
سرور مجازی (VPS/VDS)

مرورگرها و موتورهای جستجو انتظار HTTPS دارند و Let's Encrypt گواهی را رایگان می‌دهد. روی VPS Linux Infrawire با AlmaLinux 9، Certbot می‌تواند گواهی را بگیرد، پیکربندی Apache را ویرایش کند و خودش آن را تمدید کند. همین مراحل برای Rocky Linux 9 هم صادق است.

📋 پیش‌نیازها

  • یک VPS با AlmaLinux 9 و دسترسی root یا sudo (آی‌پی و گذرواژه در بخش کاربری مشتری).
  • یک دامنه، example.com، که رکورد A آن (و AAAA برای IPv6) به VPS_IP اشاره کند. ابتدا منتظر انتشار DNS بمانید.
  • Apache (httpd) که سایت را روی HTTP و درگاه 80 ارائه می‌دهد.

1. نصب Apache و باز کردن فایروال

اگر Apache هنوز نصب نیست، آن را نصب و راه‌اندازی کنید. سپس HTTP و HTTPS را در firewalld باز کنید؛ درگاه 80 برای اعتبارسنجی Let's Encrypt لازم است.

Bash
dnf install -y httpd systemctl enable --now httpd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services

2. ساخت میزبان مجازی برای دامنه

Certbot دنبال یک ServerName مطابق دامنهٔ شما می‌گردد، پس یک میزبان مجازی اختصاصی بسازید.

Bash
mkdir -p /var/www/example.com/public_html echo "Hello" > /var/www/example.com/public_html/index.html

فایل /etc/httpd/conf.d/example.com.conf را بسازید:

Apache
1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5</VirtualHost>

نحو را بررسی کنید و دوباره بارگذاری کنید:

Bash
apachectl configtest systemctl reload httpd

3. نصب Certbot و mod_ssl

Certbot از مخزن EPEL می‌آید. mod_ssl ماژول TLS آپاچی و گواهی پیش‌فرضی را فراهم می‌کند که httpd برای گوش دادن روی درگاه 443 به آن نیاز دارد.

Bash
dnf install -y epel-release dnf install -y certbot python3-certbot-apache mod_ssl

4. درخواست گواهی

Certbot را با افزونهٔ Apache اجرا کنید. دامنه را از طریق HTTP اعتبارسنجی می‌کند، یک میزبان مجازی جدید به نام *-le-ssl.conf می‌نویسد و می‌تواند تغییر مسیر HTTP به HTTPS را اضافه کند.

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

یک ایمیل واقعی وارد کنید (برای هشدار انقضا)، شرایط را بپذیرید و هنگام پرسش گزینهٔ تغییر مسیر را انتخاب کنید. هر نامی که با -d می‌دهید باید به این سرور اشاره کند، وگرنه اعتبارسنجی شکست می‌خورد.

اگر SELinux در حالت enforcing است (پیش‌فرض)، برای نصب معمول کار خاصی لازم نیست. برای دور زدن یک خطا آن را غیرفعال نکنید.

5. بررسی تمدید خودکار

گواهی‌های Let's Encrypt ۹۰ روز اعتبار دارند. روی AlmaLinux 9 بسته یک تایمر systemd نصب می‌کند که روزی دو بار اجرا می‌شود و فقط گواهی‌های نزدیک به انقضا را تمدید می‌کند.

Bash
systemctl list-timers | grep certbot systemctl status certbot-renew.timer

اگر تایمر در فهرست نبود، آن را فعال کنید:

Bash
systemctl enable --now certbot-renew.timer

تمدید را بدون دست زدن به گواهی واقعی شبیه‌سازی کنید:

Bash
certbot renew --dry-run

خط آخر باید بگوید همهٔ تمدیدهای شبیه‌سازی‌شده موفق بوده‌اند. پس از تمدید واقعی، Apache خودکار بارگذاری مجدد می‌شود.

بررسی

Bash
certbot certificates curl -I https://example.com curl -I http://example.com

دستور اول دامنه‌ها و تاریخ انقضا را فهرست می‌کند. درخواست HTTPS باید 200 بدهد و درخواست HTTP باید با 301 به نشانی HTTPS هدایت کند. در مرورگر، قفل باید گواهی معتبر صادرشده توسط Let's Encrypt را نشان دهد. برای دیدن کل زنجیره می‌توانید openssl s_client -connect example.com:443 -servername example.com را اجرا کنید.

عیب‌یابی

  • شکست challenge یا اتمام زمان هنگام اعتبارسنجی: DNS هنوز به سرور اشاره نمی‌کند یا درگاه 80 بسته است. dig +short example.com، firewall-cmd --list-services و هر فایروالِ جلوی VPS را بررسی کنید.
  • Certbot میزبان مجازی مطابق پیدا نمی‌کند: ServerName یا ServerAlias در /etc/httpd/conf.d/ با دامنهٔ واردشده یکی نیست. اصلاح کنید، apachectl configtest را اجرا کنید و دوباره تلاش کنید. می‌توانید از certbot certonly --apache هم استفاده کنید و مسیرها را خودتان تنظیم کنید.
  • گواهی یا اعتبارسنجی ناموفق بیش از حد (محدودیت نرخ): Let's Encrypt تلاش‌های تکراری را محدود می‌کند. ابتدا با certbot --apache --dry-run آزمایش کنید و پیش از تلاش دوباره صبر کنید.
  • سایت پس از نصب روی 443 در دسترس نیست: HTTPS در firewalld باز نیست یا httpd دوباره بارگذاری نشده است. firewall-cmd --permanent --add-service=https، firewall-cmd --reload و systemctl restart httpd را اجرا کنید.

🔐 سایت Apache شما روی AlmaLinux 9 اکنون HTTPS ارائه می‌دهد و گواهی خود را خودکار تمدید می‌کند.

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.