العربية

شهادة SSL مجانية من Let's Encrypt لخادم Apache على AlmaLinux 9

2 min
استضافة VPS/VDS

تتوقع المتصفحات ومحركات البحث وجود HTTPS، وتوفر Let's Encrypt الشهادات مجانًا. على VPS Linux Infrawire بنظام AlmaLinux 9 يستطيع Certbot الحصول على الشهادة وتعديل إعداد Apache وتجديدها تلقائيًا. تصلح الخطوات نفسها لنظام Rocky Linux 9.

📋 المتطلبات

  • خادم VPS بنظام AlmaLinux 9 مع صلاحية root أو sudo (عنوان IP وكلمة المرور في منطقة العميل).
  • نطاق 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 لـ Apache وشهادة افتراضية يحتاجها 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 مدة 90 يومًا. على 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.

استكشاف الأخطاء

  • فشل التحدي أو انتهاء المهلة أثناء التحقق: لا يشير 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 ويجدد شهادته بنفسه.

ابقَ على اطلاع بأحدث العروض والخصومات والعروض الترويجية الخاصة.

عرض العروض الترويجية

نستخدم ملفات تعريف الارتباط

نستخدم كوكيز تحليلية لتحسين تجربتك. لا نبيع البيانات لأطراف ثالثة. المزيد في سياسة الخصوصية.