إعداد شهادة SSL/TLS: دليل Let's Encrypt الشامل
تثبيت شهادة SSL/TLS مجانية باستخدام Let's Encrypt وCertbot على Nginx وApache. التجديد التلقائي وإعداد HTTPS وحل المشكلات الشائعة.
جدول المحتويات
إعداد شهادة SSL/TLS: دليل Let's Encrypt الشامل
تقوم شهادات SSL/TLS بتشفير الاتصال بين خادم الويب والزوار. أصبح HTTPS ضرورياً اليوم لتحسين محركات البحث وثقة المتصفح وأمان المستخدم. توفر Let's Encrypt شهادات مجانية وآلية ومفتوحة المصدر.
ما هو SSL/TLS؟
SSL (طبقة المقابس الآمنة) وخلفه الحديث TLS (أمان طبقة النقل) هما بروتوكولان تشفيريان لتأمين البيانات عبر الشبكة. عند استخدام HTTPS:
- يتم تشفير البيانات أثناء النقل (السرية)
- يتم التحقق من هوية الخادم (المصادقة)
- لا يمكن التلاعب بالبيانات (النزاهة)
تُعلّم المتصفحات الحديثة مواقع HTTP بـ"غير آمن". تستخدم Google HTTPS كعامل ترتيب. على خوادم REXE، تثبيت SSL مجاني وسهل.
تثبيت Certbot
Certbot هو الأداة الرسمية للحصول على شهادات Let's Encrypt وتجديدها تلقائياً.
Debian/Ubuntu
# تحديث النظام
sudo apt update && sudo apt upgrade -y
# تثبيت Certbot مع إضافة Nginx
sudo apt install certbot python3-certbot-nginx -y
# لـ Apache
sudo apt install certbot python3-certbot-apache -y
RHEL/CentOS/AlmaLinux
# إضافة مستودع EPEL
sudo dnf install epel-release -y
# تثبيت Certbot
sudo dnf install certbot python3-certbot-nginx -y
التثبيت عبر Snap (موصى به)
# تثبيت snapd
sudo apt install snapd -y
# تثبيت Certbot عبر snap
sudo snap install --classic certbot
# إنشاء رابط رمزي
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# التحقق من الإصدار
certbot --version
الحصول على شهادة SSL لـ Nginx
المتطلبات الأساسية
قبل الحصول على الشهادة:
- يجب أن يشير نطاقك إلى عنوان IP الخادم
- يجب أن تكون المنافذ 80 و443 مفتوحة
- يجب أن يكون Nginx يعمل
# التحقق من تحليل النطاق
nslookup example.com
# التحقق من حالة جدار الحماية
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
الإعداد التلقائي لـ Nginx
# الحصول على الشهادة وإعداد Nginx تلقائياً
sudo certbot --nginx -d example.com -d www.example.com
# الحصول على الشهادة فقط (إعداد يدوي)
sudo certbot certonly --nginx -d example.com -d www.example.com
# شهادة Wildcard (تتطلب تحقق DNS)
sudo certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com
إعداد SSL يدوي في Nginx
# إعادة توجيه HTTP إلى HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
# كتلة خادم HTTPS
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=15768000" always;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# اختبار الإعداد
sudo nginx -t
# إعادة تحميل Nginx
sudo systemctl reload nginx
الحصول على شهادة SSL لـ Apache
# تفعيل وحدة SSL
sudo a2enmod ssl
sudo a2enmod rewrite
# الحصول على الشهادة مع إضافة Apache
sudo certbot --apache -d example.com -d www.example.com
إعداد SSL يدوي في Apache
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
التجديد التلقائي
شهادات Let's Encrypt صالحة لمدة 90 يوماً. يُعدّ Certbot مؤقتاً لـ systemd أو مهمة cron للتجديد التلقائي.
# اختبار التجديد التلقائي
sudo certbot renew --dry-run
# التحقق من حالة المؤقت
sudo systemctl status certbot.timer
# التجديد اليدوي
sudo certbot renew
# إعادة تحميل Nginx بعد التجديد
sudo certbot renew --post-hook "systemctl reload nginx"
التجديد عبر Cron
# تعديل crontab
sudo crontab -e
# الفحص مرتين يومياً
0 0,12 * * * certbot renew --quiet --post-hook "systemctl reload nginx"
التحقق من حالة الشهادة
# سرد جميع الشهادات
sudo certbot certificates
# التحقق من تاريخ انتهاء الصلاحية
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
استكشاف الأخطاء وإصلاحها
المنفذ 80 محجوب
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo systemctl status nginx
خطأ في تحليل النطاق
nslookup example.com 8.8.8.8
dig example.com +short
curl -4 ifconfig.me
تطبّق Let's Encrypt حدوداً للمعدل: 5 محاولات فاشلة في الساعة. استخدم --staging للاختبار.
# بيئة الاختبار (بدون حدود)
sudo certbot --nginx --staging -d example.com
الخلاصة
مع Let's Encrypt وCertbot، يستغرق تثبيت شهادة SSL/TLS بضع دقائق فقط. يُزيل التجديد التلقائي القلق من انتهاء صلاحية الشهادة. استخدام HTTPS على خوادم REXE أمر بالغ الأهمية لكل من الأمان وأداء تحسين محركات البحث.
مقالات ذات صلة
الاتصال بخادم VDS عبر SSH: PuTTY والطرفية والمفاتيح
دليل شامل للاتصال بخادم Linux VDS عبر SSH: PuTTY، الطرفية، المصادقة بالمفتاح، إنشاء قاعدة تصفية Path Panel، تغيير المنفذ ونصائح الأمان الأساسية.
الاتصال بـ Windows VDS عبر RDP: دليل شامل للمبتدئين
دليل خطوة بخطوة للاتصال بـ Windows Server VDS عبر RDP: الإعداد الكامل، تفعيل NLA للأمان، إنشاء قاعدة تصفية Path Panel واستكشاف الأخطاء وإصلاحها.
تغيير نظام تشغيل خادم VDS: دليل إعادة التثبيت خطوة بخطوة
تغيير نظام تشغيل خادم VDS عبر لوحة REXE: نصائح النسخ الاحتياطي قبل التثبيت، توزيعات Linux المدعومة وإصدارات Windows Server المتاحة للتثبيت الآن.