ما يعنيه «انتهت صلاحية الشهادة» فعلًا
كل شهادة TLS تحمل تاريخين: ليس قبل وليس بعد. ويقارن المتصفح الساعة بهذين التاريخين في كل اتصال. وبعد تاريخ ليس بعد لا تعدّ الشهادة إثباتًا صالحًا لأي شيء، فيرفض المتصفح المتابعة ويعرض تحذيرًا يملأ الصفحة بدل موقعك.
ويتبع ذلك ثلاثة أمور، وهي سبب كون المسألة عاجلة لا شكلية:
- لم يتعطّل شيء في خادمك. الموقع يعمل، والملفات سليمة، وقاعدة البيانات سليمة. لقد مرّ تاريخ.
- لا يحدث ذلك تدريجيًا. لا يوجد وضع منقوص – يعمل الموقع حتى ثانية الانتهاء، ثم يصبح صفحة تحذير لكل زائر.
- الأمر يتجاوز المتصفحات. عملاء واجهات البرمجة، وتطبيقات الهاتف، وخطافات الويب من مزوّدي الدفع، وكل ما يستعمل مكتبة HTTP صارمة، سيرفض الاتصال أيضًا، وبرسالة خطأ أقل إفادة عادةً.
والإصلاح له الشكل نفسه دائمًا: احصل على شهادة جديدة، ثبّتها، ثم أعد تحميل الخدمة التي تقدّمها. ومعظم الوقت المهدور في هذه المشكلة يذهب إلى الخطوتين الثانية والثالثة، لا الأولى.
أولًا، تأكّد أن السبب هو الانتهاء فعلًا
مشكلات مختلفة عدّة تنتج صفحة تحذير متشابهة المظهر، وإصلاح كل منها مختلف تمامًا. اقرأ رمز الخطأ لا العنوان.
NET::ERR_CERT_DATE_INVALID– هذا هو الانتهاء (أو ساعة خادم مضبوطة بشكل خاطئ تمامًا). تابع مع هذا الدليل.NET::ERR_CERT_COMMON_NAME_INVALID– الشهادة صالحة لكنها لا تغطّي الاسم الذي زرته. شائع حين يُتركwwwأو نطاق فرعي جديد خارجها.NET::ERR_CERT_AUTHORITY_INVALID– موقّعة ذاتيًا، أو الجهة المصدرة غير موثوقة، أو تنقص شهادة وسيطة من الذي يرسله الخادم.SSL_ERROR_BAD_CERT_DOMAIN(صياغة Firefox) – نفس عدم تطابق الاسم أعلاه.
تحقّق من التواريخ من خارج جهازك، لا من المتصفح الذي تنظر إليه أصلًا، كي لا تضلّلك ذاكرة محلية أو وكيل قديم. تُظهر أداة فحص شهادة SSL الجهة المصدرة، وتاريخي الصلاحية، والأيام المتبقية، وكل اسم تغطّيه الشهادة. فإن كان تاريخ النهاية في الماضي فقد تأكّدت – وتعرف في الوقت نفسه ما إذا كانت الأسماء التي تحتاجها مدرجة في الشهادة، وهو ما يعفيك من جولة ثانية من هذا كله.
التجديد والتثبيت: أربع خطوات
هذه الخطوات الأربع هي العمل كله. والثالثة هي التي يتجاوزها الناس.
1. احصل على شهادة جديدة
مع Let's Encrypt أو أي عميل ACME يكون ذلك أمرًا واحدًا عادةً – certbot
renew أو زر التجديد في لوحتك. وإن كان التجديد يفشل لا أنه متأخر فقط، فانتقل إلى قسم فشل
التجديد أدناه، لأن تشغيل الأمر مرة أخرى سيفشل بالطريقة نفسها.
ومع شهادة مدفوعة قد تحتاج إلى توليد طلب توقيع جديد، وإتمام التحقق من النطاق مرة أخرى، وتنزيل الملفات الصادرة. احفظ المفتاح الخاص الذي أنشأت به الطلب: فالشهادة بلا قيمة بدونه.
2. ثبّت السلسلة الكاملة لا الشهادة وحدها
يحتاج خادمك إلى إرسال شهادتك والشهادات الوسيطة التي تصلها بجذر موثوق. وعادةً تعطيك جهة التصديق ملف الشهادة وحزمة أو ملف سلسلة؛ وتثبيت الشهادة وحدها ينتج خطأ «جهة غير صالحة» عند بعض العملاء، ويخلق الحالة المحيّرة «لكنه يعمل في متصفحي» – لأن المتصفحات كثيرًا ما تحتفظ بالشهادات الوسيطة من مواقع أخرى، والعميل الجديد لا يفعل.
وجّه إعداداتك إلى ملف السلسلة الكاملة (تسمّيه Let's Encrypt
fullchain.pem) وإلى المفتاح الخاص المطابق.
3. أعد تحميل الخدمة
كتابة الملفات وحدها لا تغيّر شيئًا. فالعملية العاملة حمّلت الشهادة القديمة في الذاكرة عند الإقلاع وستظل تقدّمها إلى أن يُقال لها غير ذلك. أعد تحميل nginx أو Apache أو Caddy أو HAProxy أو موازن التحميل أو ما يُنهي TLS. وهذا هو أشيع سبب بفارق كبير لظهور شهادة مجدَّدة بشكل صحيح على أنها منتهية.
وإذا كان TLS يُنهى في مكان آخر – شبكة CDN، أو وكيل عكسي، أو موازن تحميل مُدار، أو حدّ منصة – فذاك هو ما يحتاج الشهادة الجديدة، وقد لا تكون ملفات خادم المصدر لديك ذات صلة.
4. تحقّق من الخارج
استعلم عن اسم المضيف المنشور مرة أخرى من خارج شبكتك وتأكّد من تاريخ النهاية الجديد ومن الأسماء
المغطّاة. لا تعتمد على متصفحك، فقد يظل يعرض لك اتصالًا مخزّنًا أو صفحة اعتراضية. وتحقّق من
www ومن الجذر كلًّ على حدة إن كان كلاهما يقدّم الموقع: فقد تكون شهادتاهما
مختلفتين.
حين يتوقّف التجديد التلقائي بصمت
إن كان لديك عميل ACME، فانتهاء الشهادة يعني أن التجديد يفشل منذ أسابيع، في مهمة مجدولة لا يقرأها أحد عادةً. والأسباب المعتادة، بترتيب تقريبي للشيوع:
- تحدّي
HTTP-01لم يعد يصل إلى الخادم. إعادة توجيه جديدة تدفع كل حركة HTTP إلى HTTPS، أو قاعدة جدار حماية، أو قاعدة إعادة كتابة تعترض/.well-known/acme-challenge/– كلها تعطّل التحقق. يجب أن يظل هذا المسار متاحًا عبر HTTP العادي. - تغيّر DNS. الاسم يشير الآن إلى مكان آخر، فيقدّم التحدي مضيف لا يملك الرمز. وإن كنت قد نقلت الاستضافة حديثًا فالسبب هذا على الأرجح – استعلم عن الاسم وانظر إلى أين يحلّ فعلًا عبر أداة استعلام DNS.
- اسم في الشهادة لم يعد موجودًا. يجدّد ACME المجموعة كلها مرة واحدة، فنطاق فرعي متوقّف لم يعد يحلّ يُفشل التجديد بأكمله، ومعه الأسماء التي ما زالت تعمل.
- المؤقّت أو المهمة المجدولة لا تعمل. بعد نقل خادم أو ترقية نظام، كثيرًا ما يكون مؤقّت systemd أو مُدخل cron قد اختفى تمامًا.
- العميل قديم جدًا. نقاط ACME v1 متوقفة منذ زمن؛ وعميل لم يُحدَّث لسنوات لا يستطيع التجديد أصلًا.
شغّل التجديد يدويًا واقرأ الخطأ بدل إعادة جدولته والأمل في الأفضل. فالتشغيل التجريبي يخبرك ما إذا كانت المحاولة التلقائية القادمة ستنجح، وهو السؤال الوحيد المهم.
حين تكون الشهادة سليمة والسلسلة ليست كذلك
أحيانًا تكون شهادتك صالحة بوقت وفير ومع ذلك يفشل الموقع. والتفسير المعتاد أن شهادة وسيطة في السلسلة قد انتهت، أو أن خادمك يرسل سلسلة قديمة تضم جذرًا موقّعًا تقاطعيًا انتهت صلاحيته.
هذا ما سبّب انقطاعًا شهيرًا في 2021، حين انتهى جذر واسع الاستخدام فبدأت آلاف المواقع التي تقدّم سلسلة قديمة تفشل على العملاء الأقدم، مع أنها تبدو سليمة تمامًا في متصفحات ذلك الوقت. والعَرَض مميّز: متصفحات سطح المكتب الحديثة راضية، بينما الأجهزة الأقدم وبعض تطبيقات الهاتف وعملاء HTTP على الخوادم ترفض الاتصال.
والإصلاح هو إعادة تثبيت السلسلة التي تنشرها جهة التصديق اليوم، لا الملف الذي نزّلته قبل سنوات، ثم إعادة التحميل. افحص ما يرسله خادمك فعلًا – لا ما تظن أنه يرسله – وتأكّد من كل شهادة في السلسلة بتاريخ انتهائها الخاص عبر أداة فحص الشهادات.
لماذا ما زال يقول «منتهية» بعد الإصلاح
جدّدت وثبّتت وأعدت التحميل، والتحذير باقٍ. راجع هذه بالترتيب:
- شيء آخر يُنهي TLS. شبكة CDN أو وكيل أمام مصدرك يقدّم شهادته الخاصة للزوّار. حدّثها هناك.
- خلف الاسم أكثر من خادم. مع عدّة خوادم خلفية وراء موازن تحميل، فإن شهادة مثبّتة على واحد منها تعني أن نصف زوّارك تقريبًا ما زال يرى القديمة – وكون إعادة تحميل الصفحة تُصلح الأمر أحيانًا هو الدليل.
- متصفحك يعرض لك حالة مخزّنة. جرّب نافذة خاصة، أو متصفحًا آخر، أو فحصًا من خارج شبكتك تمامًا.
- عدّة مضيفات افتراضية، وواحد فقط محدَّث. اسم المضيف الذي اختبرته ليس الذي استخدمه الزائر. تحقّق من كل اسم على حدة.
- إعادة التحميل لم تحدث فعلًا. فشل اختبار الإعدادات يعني غالبًا أن الخدمة تواصل العمل بالإعدادات القديمة والشهادة القديمة. انظر إلى حالة الخدمة لا إلى رمز خروج أمرك فقط.
كيف تضمن ألّا يتكرّر
انتهاء الصلاحية هو أكثر انقطاع قابل للتفادي، لأن الموعد يُنشر قبل أشهر.
- أتمِت التجديد، ثم تحقّق من الأتمتة. عميل ACME مع مؤقّت، وتشغيل تجريبي رأيته ينجح بنفسك. فالأتمتة غير المختبرة ليست أتمتة.
- راقب الأيام المتبقية لا الإتاحة فقط. فحص الإتاحة ينجح حتى لحظة الانتهاء ولا يخبرك شيئًا قبلها. اجعل التنبيه عند 21 يومًا ثم عند 7.
- أبقِ قائمة أسماء الشهادة صادقة. احذف النطاقات الفرعية المتوقفة حتى لا يُفشل اسم ميت التجديد كله.
- انتبه لتقصير المدد. أعمار الشهادات تتقلّص منذ سنوات وستتقلّص أكثر. وأي عملية تعتمد على تذكّر إنسان ستنكسر؛ فالأتمتة لم تبق اختيارية.
- افحص السلسلة بعد أي ترحيل. فنقل الاستضافة هو اللحظة التي تظهر فيها شهادة وسيطة قديمة أو مُنهي TLS منسيّ.
وإن أردت الصورة الكاملة لما تحتويه الشهادة وكيف تُقرأ السلسلة، فإن دليل فحص شهادات SSL/TLS يمرّ على كل حقل.
أخطاء شائعة
- تثبيت الشهادة الجديدة دون إعادة تحميل الخدمة. أشيع سبب لـ«أصلحته وما زال معطّلًا».
- تثبيت الشهادة دون سلسلة الوسطاء. يعمل في متصفحك ويفشل عند العملاء الآخرين.
- إعادة تشغيل تجديد فاشل دون تغيير. سيفشل بالطريقة نفسها؛ اقرأ الخطأ أولًا.
- الحكم على الإصلاح من المتصفح الذي كنت تستخدمه. تحقّق من خارج شبكتك.
- إصلاح الجذر ونسيان
www، أو العكس. - حذف المفتاح الخاص أثناء الارتباك. فبدونه لا يمكن تثبيت الشهادة الجديدة.
- الاعتماد على مراقب الإتاحة لتحذيرك من الانتهاء. لا يستطيع ذلك.
الخلاصة
الشهادة المنتهية مشكلة تاريخ لا مشكلة خادم: تأكّد أن الخطأ هو فعلًا
NET::ERR_CERT_DATE_INVALID، وأصدر شهادة جديدة، وثبّت السلسلة الكاملة مع
مفتاحها الخاص المطابق، وأعد تحميل الخدمة التي تُنهي TLS، ثم تحقّق من تاريخ
الانتهاء الجديد من خارج شبكتك. وإن كان التجديد مفترضًا أن يكون تلقائيًا، فاعرف لماذا توقّف – عادةً
مسار تحدّي ACME محجوب، أو تغيير في DNS، أو نطاق فرعي متوقّف – قبل إعادة جدولته. ثم راقب الأيام
المتبقية حتى لا يصل الموعد القادم إلى الصفر أبدًا. افحص شهادة أي نطاق وسلسلتها وتاريخ انتهائها
الدقيق عبر أداة فحص شهادة SSL المجانية،
وتأكّد إلى أين يشير الاسم عبر
أداة البحث في DNS.
أدوات وأدلة ذات صلة:
- فاحص شهادات SSL — افحص شهادة SSL لأي نطاق: الجهة المُصدِرة وتاريخ الانتهاء والأيام المتبقية.
- فاحص رؤوس الأمان — تحقق من HSTS وCSP وX-Frame-Options ورؤوس الأمان الرئيسية الأخرى.
- فاحص شهادة SSL: دليل كامل لفحص شهادات SSL/TLS — تعلّم كيفية استخدام فاحص شهادة SSL لفحص شهادة SSL/TLS لأي نطاق: الجهة المصدرة وتواريخ الصلاحية والأيام المتبقية والأسماء المشمولة.
أسئلة شائعة
كيف أُصلح شهادة SSL منتهية الصلاحية؟⌄
أصدر شهادة جديدة، وثبّتها مع سلسلة الوسطاء والمفتاح الخاص المطابق، ثم أعد تحميل الخدمة التي تُنهي TLS: nginx أو Apache أو موازن التحميل أو شبكة CDN لديك. وأخيرًا تحقّق من تاريخ الانتهاء الجديد من خارج شبكتك، لأن ذاكرة محلية قد تظل تعرض لك الحالة القديمة.
لماذا ما زالت شهادتي تظهر منتهية بعد التجديد؟⌄
في الغالب لأن الخدمة لم تُعد تحميلها: فالعملية العاملة تحفظ الشهادة القديمة في الذاكرة حتى تُعاد تشغيلها. والأسباب الشائعة الأخرى أن شبكة CDN أو وكيلًا أمام مصدرك يقدّم شهادته الخاصة، أو أن خادمًا خلفيًا واحدًا من عدّة خوادم هو ما حُدِّث، أو أنك تفحص من متصفح باتصال مخزّن.
هل يمكنني الاستمرار في استخدام موقعي بشهادة منتهية؟⌄
يمكنك تجاوز التحذير في متصفح سطح مكتب، لكن زوّارك لن يفعلوا، والعملاء من غير المتصفحات لا يستطيعون. فنداءات واجهات البرمجة وتطبيقات الهاتف وخطافات مزوّدي الدفع ترفض الاتصال فورًا، فتعامل مع الأمر كانقطاع كامل لا كتحذير شكلي.
لماذا توقّف التجديد التلقائي لـ Let’s Encrypt؟⌄
عادةً لأن تحدّي HTTP-01 لم يعد يصل إلى خادمك – إعادة توجيه HTTPS جديدة أو قاعدة جدار حماية تحجب /.well-known/acme-challenge/ – أو لأن DNS يشير الآن إلى مكان آخر، أو لأن نطاقًا فرعيًا في الشهادة لم يعد يحلّ، أو لأن مؤقّت التجديد اختفى في أثناء نقل الخادم. شغّل التجديد يدويًا واقرأ الخطأ.
قبل الانتهاء بكم ينبغي أن أجدّد؟⌄
أتمِت الأمر وجدّد عند نحو ثلث العمر المتبقي للشهادة، وهو ما تفعله عملاء ACME تلقائيًا. واجعل التنبيه بالأيام المتبقية عند 21 يومًا ثم عند 7، لأن مراقب الإتاحة سينجح حتى اللحظة التي تنتهي فيها الشهادة.
خبرة عملية تزيد على 15 عامًا في تطوير الويب وأمنه. يركّز على أمن الويب العملي: الحفاظ على المواقع آمنة وموثوقة وسهلة التشخيص. وُجد BuildToolForge ليجعل هذه الفحوصات مجانية وخاصة ومفهومة. تعمل الأدوات في متصفحك كلما أمكن، ولا يُخزَّن أي شيء تُدخله في أداة.
كيف نكتب أدلتنا: يُكتب كل دليل من خبرة عملية، ويُراجَع وفق المعايير الرسمية، ويُختبر بأدواتنا على نطاقات حقيقية، ونحدّثه عندما تتغير المعايير أو الأدوات. وجدت خطأً؟ راسلنا على contact@buildtoolforge.com.