تفعيل تشفير SSL في خادم NGINX
نُشر في
- لينكس
- خادم Nginx
- أدوات برمجة
- برمجة

جدول المحتويات
- ملخص
- مقدمة
- متطلبات النظام
- تثبيت Certbot وإضافة Nginx
- الحصول على شهادات SSL
- إعداد Nginx لاستخدام SSL
- تجديد الشهادات
- تحسينات أمنية إضافية
- خاتمة
- المراجع
1. ملخص
يقدم هذا المقال دليلاً عملياً لتفعيل تشفير SSL/TLS على خادم Nginx باستخدام Certbot، وهو عميل Let's Encrypt الرسمي. يغطي الدليل إعداد النظام، والحصول على الشهادات، وتكوين Nginx، وتطبيق أفضل الممارسات الأمنية لضمان عمل HTTPS وتجديد الشهادات تلقائياً لحماية الموقع وبيانات المستخدمين.
2. مقدمة
يُعد كل من بروتوكول طبقة المقابس الآمنة (SSL) والبروتوكول الأحدث أمان طبقة النقل (TLS) من البروتوكولات التشفيرية المخصصة لتأمين الاتصال عبر الإنترنت. ويعد تفعيل HTTPS (بروتوكول نقل النص الفائق الآمن) خطوة أساسية لحماية البيانات وبناء الثقة مع الزوار.
تُعتبر Let's Encrypt هيئة شهادات مجانية ومؤتمتة ومفتوحة توفر تشفير HTTPS لمواقع الويب. ويُعد Certbot الأداة الرسمية لطلب هذه الشهادات وتجديدها بسلاسة، حيث يمكنه تكوين إعدادات Nginx تلقائياً عند استخدامه.
3. متطلبات النظام
لاستخدام Certbot مع Nginx، يجب توفر المتطلبات التالية:
- نظام تشغيل مبني على لينكس (Ubuntu أو Debian أو CentOS وغيرها)
- اسم نطاق مسجل (مثل
example.com) - سجل DNS من نوع A يشير إلى عنوان IP الخاص بالخادم
- صلاحيات المستخدم الجذر (root) أو sudo على الخادم
- خادم Nginx مثبت ويعمل بشكل سليم
4. تثبيت Certbot وإضافة Nginx
1. على توزيعات Ubuntu/Debian:
sudo apt update
sudo apt install certbot python3-certbot-nginx
2. على توزيعات CentOS/RHEL:
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
5. الحصول على شهادات SSL
الخيار أ: التكوين التلقائي بالكامل
يستطيع Certbot اكتشاف إعدادات Nginx وتعديلها تلقائياً:
sudo certbot --nginx
سيطلب منك البرنامج:
- إدخال اسم النطاق (أو النطاقات) الخاصة بك
- تحديد ما إذا كنت ترغب في إعادة توجيه اتصالات HTTP تلقائياً إلى HTTPS
- الموافقة على شروط خدمة Let's Encrypt
سيقوم Certbot بعد ذلك بإصدار الشهادة وتحديث ملفات إعداد Nginx وإعادة تحميل الخادم تلقائياً.
الخيار ب: إصدار الشهادة فقط (إعداد يدوي)
تتيح لك هذه الطريقة تحكماً أدق في إعدادات Nginx بنفسك:
sudo certbot certonly --nginx -d example.com -d www.example.com
6. إعداد Nginx لاستخدام SSL
إذا لم تكن قد اخترت الإعداد التلقائي، قم بتحديث كتلة الخادم (Server Block) يدوياً:
server {
listen 443 ssl;
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 HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
# Redirect HTTP to HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
اختبار صحة الإعدادات وإعادة تحميل Nginx:
sudo nginx -t
sudo systemctl reload nginx
7. تجديد الشهادات
شهادات Let's Encrypt صالحة لمدة 90 يوماً، ويتضمن Certbot نظام تجديد مدمجاً ومؤتمتاً.
اختبار التجديد التلقائي (محاكاة):
sudo certbot renew --dry-run
إعداد مهمة مجدولة عبر Cron أو مؤقت Systemd:
sudo crontab -e
# Add the following entry:
0 2 * * * /usr/bin/certbot renew --quiet
8. تحسينات أمنية إضافية
لتعزيز حماية اتصال SSL، يُنصح بإضافة التوجيهات التالية إلى إعدادات الخادم:
تفعيل HSTS (أمان النقل الصارم لـ HTTP):
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
تفعيل OCSP Stapling:
ssl_stapling on;
ssl_stapling_verify on;
توليد واستخدام معاملات Diffie-Hellman:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
ثم تضمين الملف في إعدادات Nginx:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
9. خاتمة
يُعد تفعيل SSL/TLS على خادم Nginx باستخدام Certbot طريقة مباشرة وآمنة لضمان سرية البيانات وسلامتها على الويب. ويسهل التكامل بين Certbot و Nginx إصدار وتجديد الشهادات بشكل كبير. ومن خلال تطبيق أفضل الممارسات كالتجديد التلقائي والتشفير القوي وإضافة الترويسات الأمنية، يستطيع مديرو النظم حماية بنيتهم التحتية ومستخدميهم من الهجمات الشائعة.
التعليقات 0
لا توجد تعليقات بعد.
اكتب تعليقاً