انتقل إلى المحتوى الرئيسي

تفعيل تشفير SSL في خادم NGINX

نُشر في

  • لينكس
  • خادم Nginx
  • أدوات برمجة
  • برمجة

جدول المحتويات

  1. ملخص
  2. مقدمة
  3. متطلبات النظام
  4. تثبيت Certbot وإضافة Nginx
  5. الحصول على شهادات SSL
  6. إعداد Nginx لاستخدام SSL
  7. تجديد الشهادات
  8. تحسينات أمنية إضافية
  9. خاتمة
  10. المراجع

 

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:

توزيعات Ubuntu / Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx

2. على توزيعات CentOS/RHEL:

توزيعات CentOS / RHEL
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx

5. الحصول على شهادات SSL

الخيار أ: التكوين التلقائي بالكامل

يستطيع Certbot اكتشاف إعدادات Nginx وتعديلها تلقائياً:

تشغيل 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) يدوياً:

/etc/nginx/sites-available/example.com
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:

إعادة تحميل Nginx
sudo nginx -t
sudo systemctl reload nginx

7. تجديد الشهادات

شهادات Let's Encrypt صالحة لمدة 90 يوماً، ويتضمن Certbot نظام تجديد مدمجاً ومؤتمتاً.

اختبار التجديد التلقائي (محاكاة):

اختبار التجديد عبر Dry Run
sudo certbot renew --dry-run

إعداد مهمة مجدولة عبر Cron أو مؤقت Systemd:

إضافة مهمة مجدولة Crontab
sudo crontab -e
# Add the following entry:
0 2 * * * /usr/bin/certbot renew --quiet

8. تحسينات أمنية إضافية

لتعزيز حماية اتصال SSL، يُنصح بإضافة التوجيهات التالية إلى إعدادات الخادم:

تفعيل HSTS (أمان النقل الصارم لـ HTTP):

ترويسة HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

تفعيل OCSP Stapling:

خاصية OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;

توليد واستخدام معاملات Diffie-Hellman:

توليد معاملات DH
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

ثم تضمين الملف في إعدادات Nginx:

توجيه ssl_dhparam في Nginx
ssl_dhparam /etc/ssl/certs/dhparam.pem;

9. خاتمة

يُعد تفعيل SSL/TLS على خادم Nginx باستخدام Certbot طريقة مباشرة وآمنة لضمان سرية البيانات وسلامتها على الويب. ويسهل التكامل بين Certbot و Nginx إصدار وتجديد الشهادات بشكل كبير. ومن خلال تطبيق أفضل الممارسات كالتجديد التلقائي والتشفير القوي وإضافة الترويسات الأمنية، يستطيع مديرو النظم حماية بنيتهم التحتية ومستخدميهم من الهجمات الشائعة.

10. المراجع

التعليقات 0

لا توجد تعليقات بعد.

اكتب تعليقاً