شهادات بقي لها أشهر وتَسجيلات دخول تفشل فورًا تشير إلى كائنين مختلفين على ساعتين مختلفتين. الخادم يرفض الاتصالات لأن قائمة الشهادات المُبطلَة التي يرجع إليها تجاوزت تاريخ انتهاء صلاحيتها هي، لا لأن شهادات المستخدمين تقادمت. تجديد شهادة مستخدم لا يفيد تلك القائمة بشيء.

الفصل بين الجدولين هو التشخيص كله، وهو يغيّر ما يجب أن يكون عليه الإصلاح.

ساعتان، وواحدة منهما فقط هي الشهادة

الشهادة تحمل نافذة صلاحية. قائمة إبطال الشهادات تحمل نافذتها الخاصة، مع جهة مُصدرة وتوقيع، والمتحققون يرفضون الثقة بقائمة مضى وقت تحديثها التالي. عندما يحدث ذلك، يعرض العميل شهادة صالحة تمامًا ومع ذلك يُسقط الخادم الاتصال برسالة عن القائمة. يقرأ المستخدمون تلك الرسالة على أنها 'الشهادة انتهت صلاحيتها'، وهذا يوجّه طلب التجديد إلى المكان الخطأ.

للكائنين أيضًا مالكين مختلفين: الشهادة تأتي من الجهة المصدرة التي أصدرتها، بينما تُولَّد القائمة وفق جدول زمني بواسطة من يشغّل تلك الجهة. لا يمكن للمستخدم تحديثها، ولا يمكن لإعادة إصدار الشهادات أن تمدّد صلاحيتها.

اقرأ القائمة التي يحمّلها الخدمة فعلًا

ابدأ من التهيئة قيد التشغيل بدلًا من الملف الذي تتوقعه. قد يكون مسار crl-verify مطلقًا، أو نسبيًا إلى الملف الشخصي، أو نسخة مدمجة في صورة، والمتحقق يقرأ تلك النسخة. افحصه في موضعه باستخدام openssl crl -in /etc/openvpn/crl.pem -noout -issuer -lastupdate -nextupdate وقارن التواريخ بساعة الخادم.

ثم تأكد أن الملف هو المستخدم فعلًا: افحص توقيعه باستخدام openssl crl -in /etc/openvpn/crl.pem -CAfile /etc/openvpn/ca.crt -noout، فهو يبلّغ عن نتيجة تحقق بدلًا من طباعة الحقول بصمت. قائمة موقّعة بجهة مصدرة أخرى، أو نسخة قديمة متروكة في مجلد ثانٍ، تفشل تمامًا كالقائمة المنتهية الصلاحية.

أعد التوليد من قاعدة بيانات الإبطال، لا من الصفر

يجب أن تأتي القائمة الجديدة من قاعدة بيانات الإبطال الحالية لدى الجهة المصدرة، عبر عملية التوقيع المعتمدة. توليد قائمة فارغة، أو إعادة التوليد من نسخة احتياطية قديمة للفهرس، يُلغي الإبطال بهدوء عن كل هوية أُضيفت بعد تلك النسخة. هذا يحوّل انقطاعًا في تسجيل الدخول إلى تراجع أمني، ولا يلاحظه أحد لأن العَرَض يختفي.

أبقِ خطوة التوليد في التحكم بالإصدارات مع بقية أدوات الجهة المصدرة، حتى يُوثَّق الفاصل الزمني ومفتاح التوقيع بدلًا من تذكّرهما. وصف في دليل التشغيل يسمّي الأمر والموقّع وهدف النشر يكفي. يستطيع أي شخص في المناوبة بعد ذلك أن يعيد التوليد دون تخمين أي ملف فهرس هو المرجع. خزّن الرقم التسلسلي للقائمة ووقت تحديثها التالي مع سجل النشر.

انشر حيث ينظر المتحقق

انسخ القائمة الجديدة إلى المسار الذي تقرأه الخدمة، واضبط الملكية وأذونات الوضع بحيث يستطيع حساب الخدمة قراءتها دون غيره، ثم أعد التحميل أو أعد التشغيل وفق السلوك الموثّق. إذا كانت الخدمة تخزّن القائمة مؤقتًا عند البدء، فإن استبدال الملف دون إعادة تحميل لا يغيّر شيئًا ستلاحظه العملية الجارية. تحقّق من الطابع الزمني الذي تبلغ به العملية بعد إعادة التحميل.

إذا كانت عدة خدمات تتحقق من العملاء، فانشر لدى كل منها. تحديث نقطة نهاية واحدة وترك أخرى بالنسخة القديمة ينتج فشلًا لا يظهر إلا للمستخدمين الذين يقعون على الثانية. احتفظ بقائمة قصيرة بتلك النقاط في دليل التشغيل نفسه. بعد النشر، افحص تاريخ القائمة المبلغ عنه في كل نقطة بدلًا من افتراض أن النسخة وصلت.

اجعل الموعد النهائي التالي مرئيًا قبل أن يمضي

فاصل نشر أطول يقلل تكرار هذه الحادثة دون أن ينشئ عملية. اختر الفاصل وفق سياسة المشغّل، ثم نبّه على حقل التحديث التالي في القائمة المنشورة بمهلة كافية لإعادة التوليد والنشر. نبّه على النسخة المنشورة، لا على مضيف الجهة المصدرة، لأن النسخة المنشورة هي التي تفشل.

بعد النشر، تحقّق من الاتجاهين: مستخدم مسموح له يتصل، وهوية مبطلَة معروفة تفشل رغم ذلك. الفحص الثاني هو الذي يلتقط إعادة التوليد غير المكتملة، ويستهلك أمرًا واحدًا ضد ملف تعريف اختباري تحتفظ به لهذا الغرض بالضبط.

مقالات ذات صلة