تثبيت SSL في Apache وإعادة التوجيه إلى HTTPS عبر .htaccess
لا يزال Apache HTTP Server أحد أكثر خوادم الويب انتشارًا، ويوفّر دعم SSL عبر وحدة mod_ssl. في هذا الدليل، سنرى خطوة بخطوة كيفية تعريف شهادتك داخل VirtualHost وكيفية إعادة التوجيه من HTTP إلى HTTPS عبر .htaccess.
الملفات والوحدة المطلوبة
يتوقّع Apache أجزاء الشهادة عبر توجيهات منفصلة:
- SSLCertificateFile ←
certificate.crt(شهادة الخادم) - SSLCertificateKeyFile ←
private.key(المفتاح الخاص) - SSLCertificateChainFile ←
ca_bundle.crt(السلسلة الوسيطة)
إذا لم تكن تملك هذه الملفات، يمكنك التحقق من اسم نطاقك عبر معالج SSL المجاني لدينا وتنزيل هذه الملفات الثلاثة (وإن شئت ملف fullchain.pem الموحّد) من حزمة ZIP.
تأكد أولاً من تفعيل وحدة mod_ssl:
sudo a2enmod ssl
sudo systemctl restart apache2
الخطوة 1 — ضع الملفات في مكانها
sudo mkdir -p /etc/apache2/ssl/alanadiniz.com
sudo cp certificate.crt /etc/apache2/ssl/alanadiniz.com/
sudo cp private.key /etc/apache2/ssl/alanadiniz.com/
sudo cp ca_bundle.crt /etc/apache2/ssl/alanadiniz.com/
sudo chmod 600 /etc/apache2/ssl/alanadiniz.com/private.key
الخطوة 2 — اضبط VirtualHost
عرّف خادمًا افتراضيًا للمنفذ 443 (مثل /etc/apache2/sites-available/alanadiniz-ssl.conf):
<VirtualHost *:443>
ServerName alanadiniz.com
ServerAlias www.alanadiniz.com
DocumentRoot /var/www/alanadiniz.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/alanadiniz.com/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/alanadiniz.com/private.key
SSLCertificateChainFile /etc/apache2/ssl/alanadiniz.com/ca_bundle.crt
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
<Directory /var/www/alanadiniz.com>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
ملاحظة: في Apache 2.4.8 وما بعده، يصحّ أيضًا استخدام fullchain.pem الذي تُدمج فيه السلسلة الوسيطة مباشرةً ضمن SSLCertificateFile بدلاً من SSLCertificateChainFile.
الخطوة 3 — فعّل الموقع واختبره
sudo a2ensite alanadiniz-ssl.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
يجب أن يُظهر ناتج configtest عبارة Syntax OK. في أنظمة RHEL/CentOS، يكون اسم الخدمة httpd والمجلد /etc/httpd/.
الخطوة 4 — إعادة التوجيه إلى HTTPS عبر .htaccess
أضف القاعدة التالية إلى ملف .htaccess في المجلد الجذري لموقعك. تنقل هذه القاعدة كل طلبات HTTP بشكل دائم (301) إلى HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
تحقّق من عمل إعادة التوجيه من الطرفية:
curl -I http://alanadiniz.com
يجب أن ترى في الاستجابة سطري 301 Moved Permanently وLocation: https://....
المشكلات الشائعة
- "AH02572: Failed to configure ... no private key": مسار
SSLCertificateKeyFileخاطئ أو المفتاح تالف. - تحذير السلسلة في المتصفح: لم يُعرّف
SSLCertificateChainFile؛ أضفca_bundle.crt. - تجاهل ملف .htaccess: يجب أن يكون
AllowOverride Allمعرّفًا في كتلةDirectoryالمعنية.
الخلاصة
يقتصر SSL في Apache على أن تشير التوجيهات الثلاثة (SSLCertificateFile وSSLCertificateKeyFile وSSLCertificateChainFile) إلى الملفات الصحيحة، وعلى إعداد إعادة التوجيه 301 عبر .htaccess. يمكنك إنشاء ملفاتك عبر معالج SSL المجاني لدينا وتنزيلها من حزمة ZIP.