خطأ "اتصالك ليس خاصًا" / NET::ERR_CERT وحلوله

عندما ترى في المتصفح خطأ "اتصالك ليس خاصًا" أو NET::ERR_CERT_...، لا يُفتح الموقع ويشعر الزوّار بالخوف. في هذه المقالة، نتناول الأسباب الأكثر شيوعًا لهذا الخطأ والحل الحاسم لكل منها. انظر أولاً إلى رمز الخطأ؛ فالرمز يشير إلى المشكلة مباشرةً.

اقرأ رمز الخطأ

في المتصفحات المبنية على Chrome، يوجد رمز أسفل رسالة الخطأ. أكثرها شيوعًا:

  • NET::ERR_CERT_DATE_INVALID ← انتهت صلاحية الشهادة (أو ساعة الجهاز خاطئة).
  • NET::ERR_CERT_AUTHORITY_INVALID ← السلسلة الوسيطة مفقودة أو جهة غير موثوقة.
  • NET::ERR_CERT_COMMON_NAME_INVALID ← الشهادة لا تطابق اسم النطاق (مثل عدم تغطية www).

السبب 1 — شهادة منتهية الصلاحية

هذا هو السبب الأكثر شيوعًا. الشهادات المجانية صالحة لمدة 90 يومًا؛ ونسيان التجديد يُحدث هذا الخطأ. تحقّق من تاريخ الصلاحية من الطرفية:

echo | openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.com 2>/dev/null | openssl x509 -noout -dates

إذا كان تاريخ notAfter قد مضى، فقد انتهت صلاحية الشهادة. الحل: أنشئ شهادة جديدة عبر معالج SSL المجاني لدينا، ونزّل ملف ZIP، واكتب فوق الملفات القديمة في خادمك، ثم أعد تحميل الخدمة.

إذا ظهر الخطأ على جهازك أنت فقط، فالمشكلة على الأرجح هي خطأ في ساعة النظام. اضبط تاريخ/ساعة الجهاز تلقائيًا (NTP).

صورة: <شاشة تحذير "اتصالك ليس خاصًا" في Chrome>
خطأ NET::ERR_CERT ينجم غالبًا عن مشكلة في المدة أو السلسلة.

السبب 2 — السلسلة الوسيطة المفقودة (intermediate)

رفع certificate.crt فقط إلى الخادم ونسيان إضافة CA Bundle / السلسلة الوسيطة هو السبب الكلاسيكي لهذا الخطأ. والغريب أن الموقع يُفتح في بعض المتصفحات بينما يعطي ERR_CERT_AUTHORITY_INVALID في أخرى؛ لأن بعض الأنظمة تستطيع إكمال الشهادة الوسيطة من ذاكرتها المؤقتة بينما لا تستطيع متصفحات الجوال ذلك.

الحل — بحسب الخادم:

  • Nginx: استخدم fullchain.pem لـ ssl_certificate بدلاً من certificate.crt وحده.
  • Apache: عرّف ca_bundle.crt في توجيه SSLCertificateChainFile.
  • cPanel: املأ مربع CA Bundle في مدير SSL/TLS بمحتوى ca_bundle.crt.

للتحقق من تقديم السلسلة كاملة:

echo | openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.com -showcerts

يجب أن ترى في الناتج أكثر من كتلة BEGIN CERTIFICATE من الشهادة وحتى الشهادة الوسيطة. إذا وُجدت كتلة واحدة فقط، فالسلسلة ناقصة.

السبب 3 — عدم تطابق اسم النطاق

يشير ERR_CERT_COMMON_NAME_INVALID إلى أن الشهادة لا تغطي الاسم المطلوب. السيناريو الأكثر شيوعًا: أُخذت الشهادة لـ alanadiniz.com فقط، لكن الزائر يدخل إلى عنوان www.alanadiniz.com. الحل: عند إعادة أخذ الشهادة، علّم على خيار "تضمين النطاق الفرعي www أيضًا" في المعالج؛ بذلك يُغطّى الاسمان معًا.

السبب 4 — المحتوى المختلط (mixed content)

حتى لو كانت الصفحة نفسها HTTPS، فإذا كانت بعض الموارد بداخلها (صور، سكريبتات، أنماط) لا تزال تُحمّل عبر http://، فإن المتصفح يعرض تحذيرًا بدلاً من القفل وقد يحجب السكريبتات. يمكنك إيجاد الحل التفصيلي لهذا الموضوع في دليلنا حول المحتوى المختلط؛ والحل المختصر هو جعل جميع عناوين الموارد https://.

قائمة فحص سريعة

  1. اقرأ رمز الخطأ (DATE / AUTHORITY / COMMON_NAME).
  2. تحقّق من مدة الشهادة عبر openssl ... -dates.
  3. تحقّق من السلسلة عبر -showcerts؛ وإذا كانت ناقصة، فأضف CA Bundle.
  4. انظر هل يُغطّى www أو أسماء النطاقات الإضافية.
  5. اختبر ساعة الجهاز والذاكرة المؤقتة (نافذة التصفح الخاص).

الخلاصة

تعود الغالبية العظمى من أخطاء NET::ERR_CERT إلى ثلاثة أسباب: شهادة منتهية، وسلسلة وسيطة مفقودة، وعدم تطابق اسم النطاق. اقرأ رمز الخطأ وطبّق الحل المعني. يمكنك استخدام معالج SSL المجاني لدينا لتجديد الشهادة أو لتضمين www، ورفع ملف fullchain.pem أو ca_bundle.crt من حزمة ZIP لمعالجة السلسلة الناقصة.