تخيّل الموقف: كنت قد ثبّتُّ للتو شهادة SSL على موقعي الإلكتروني shadynagy.com. بدا كل شيء رائعًا من جانبي — الشهادة صالحة، صادرة من Sectigo، ولا يزال أمامها وقت طويل قبل انتهاء صلاحيتها (265 يومًا!). لكن عندما أجريت اختبار SSL سريعًا على WhyNoPadlock.com، ظهرت لي بعض علامات X الحمراء المحبطة:
❌ فرض HTTPS: الموقع لا يفرض استخدام SSL ❌ شهادة وسيطة غير صالحة: الشهادة الوسيطة (الحزمة) مفقودة
شعرتُ بخيبة أمل كبيرة. ما فائدة شهادة SSL إن لم تعمل بشكل صحيح؟ قد يرى زوّار موقعي تحذيرات أمنية، وقد تُخفّض محركات البحث ترتيبي، والأسوأ من ذلك — قد يبدو موقعي غير احترافي.
لكن الخبر السار: أصلحتُ كل شيء، وسأوضح لك بالضبط كيف فعلت ذلك خطوة بخطوة.
قبل الخوض في الحلول، دعنا نفهم ما تعنيه هذه الأخطاء فعليًا:
ما هي الشهادة الوسيطة؟
فكّر في شهادات SSL كسلسلة ثقة:
يحتاج موقعك إلى إرسال شهادتك والشهادة الوسيطة معًا إلى المتصفحات. بدون الشهادة الوسيطة، لا يستطيع المتصفح التحقق من سلسلة الثقة.
التأثير الفعلي:
ماذا يعني هذا؟
عندما يكتب أحدهم http://shadynagy.com (بدون حرف ‘s’)، يجب أن تتم إعادة توجيهه تلقائيًا إلى https://shadynagy.com. بدون هذا التوجيه:
اكتشفتُ أن إعدادات nginx كانت تستخدم التوجيه الخاطئ. إليك ما كان لديّ:
# ❌ إعدادات خاطئةssl_certificate /etc/nginx/ssl/shadynagy.com.crt;ssl_trusted_certificate /etc/nginx/ssl/shadynagy.com.ca-bundle;
المشكلة: التوجيه ssl_trusted_certificate مخصص لتدبيس OCSP (ميزة أداء)، وليس لإرسال سلسلة الشهادات إلى المتصفحات!
الحل هو إنشاء شهادة “سلسلة كاملة” (fullchain) تجمع بين شهادتك والشهادة الوسيطة.
الأمر:
cat /etc/nginx/ssl/shadynagy.com.crt /etc/nginx/ssl/shadynagy.com.ca-bundle > /etc/nginx/ssl/shadynagy.com-fullchain.crt
ماذا يفعل هذا:
cat - يدمج (يُلحق) الملفات> - يُخرج النتيجة إلى ملف جديد يُسمى “fullchain”مثال توضيحي: تخيّل أن لديك قطعتي أحجية:
أنت تلصقهما معًا لإنشاء أحجية كاملة يمكن للمتصفحات فهمها.
افتح ملف إعدادات SSL:
nano /etc/nginx/conf.d/shadynagy.com-ssl.conf
حدّثه إلى التالي:
server {listen 443 ssl http2; # المنفذ 443 مع SSL وHTTP/2# ✅ صحيح - استخدم شهادة السلسلة الكاملةssl_certificate /etc/nginx/ssl/shadynagy.com-fullchain.crt;ssl_certificate_key /etc/nginx/ssl/shadynagy.com.key;# اختياري: احتفظ به لتدبيس OCSP (تحسين الأداء)ssl_trusted_certificate /etc/nginx/ssl/shadynagy.com.ca-bundle;root /var/www/shady-nagy.com/html;index index.html index.htm;server_name shadynagy.com www.shadynagy.com;access_log /var/log/nginx/nginx.vhost.access.log;error_log /var/log/nginx/nginx.vhost.error.log;location / {try_files $uri $uri/ =404;}}
شرح التغييرات الرئيسية:
listen 443 ssl http2;
443 = منفذ HTTPSssl = تفعيل SSLhttp2 = تفعيل HTTP/2 لأداء أفضلssl on;ssl_certificate يشير الآن إلى السلسلة الكاملة بدلاً من شهادتك فقط
ssl_trusted_certificate يُحتفظ به لتدبيس OCSP (اختياري لكنه مُوصى به)
