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

الخطوة 1: ما يعيده كل فحص وكم يبقى صالحًا للاستخدام

تُنشر قائمة CRL ككائن موقَّع واحد يغطي كل شهادة أبطلتها الجهة المُصدرة، فيجلبها المُحقِّق مرة واحدة ويعيد استخدامها حتى يمر nextUpdate الخاص بالقائمة. استجابة OCSP أضيق نطاقًا: فهي تجيب عن شهادة واحدة بالضبط وتحمل thisUpdate وproducedAt وعادةً nextUpdate أيضًا. هذا الاختلاف يقود كل شيء آخر. قائمة CRL المخزَّنة مؤقتًا تصبح قديمة بصمت، لأن الملف ما زال يُحلَّل وتوقيعه ما زال يُتحقَّق منه، بينما استجابة OCSP منتهية الصلاحية عديمة القيمة بوضوح بمجرد قراءة الطوابع الزمنية فيها.

لذلك فإن التخزين المؤقت هو أول ما يجب تثبيته: أي مكوّن يحتفظ بالنسخة، وما السقف الذي تخضع له تلك النسخة. على البوابة ينبغي أن يكون السقف هو nextUpdate ناقص هامش أمان، لا ما تقترحه ترويسة تخزين HTTP مؤقتًا. openssl crl -in issuer.crl -noout -lastupdate -nextupdate يطبع التاريخين، و قائمة صار nextUpdate فيها في الماضي يجب التعامل معها على أنها مفقودة لا مجرد قديمة.

الخطوة 2: إلى أين تشير الشهادة العميل

تحمل شهادة الورقة عادةً تلميحين: امتداد نقطة توزيع CRL ومدخل وصول معلومات الجهة المُصدرة الخاص بـ OCSP. openssl x509 -in client.pem -noout -ext crlDistributionPoints يطبع الأول، والثاني يقع تحت قسم AIA في openssl x509 -in client.pem -noout -text. أي من الامتدادين مؤشر وليس التزامًا. العميل الذي لا ينفّذ فحص الإبطال أبدًا سيتصل بلا مشكلة بشهادة تشير امتداداتها إلى مستجيب ميت منذ عام.

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

الخطوة 3: اختر الإغلاق عند الفشل أو الفتح عند الفشل قبل الانقطاع

مستجيب لا يمكن الوصول إليه أو قائمة منتهية الصلاحية يفرض قرارًا: ارفض الاتصال، أو اقبله وسجّل الفجوة. أمر verify الفرعي في OpenSSL يجعل الخيار الصارم صريحًا، لأن إضافة -crl_check تحوّل CRL غير متاحة إلى unable to get certificate CRL وفشل في التحقق. الفشل اللين في معظم الحزم ليس علمًا على الإطلاق، بل هو غياب الفحص، وهذا بالضبط سبب شحنه عن غير قصد.

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

الخطوة 4: أثبت أن الفحص يعمل حيث يُسمح بالمرور

حدّد العملية التي تنهي الاتصال أو تأذن به، ثم اطلب منها سطر الإعداد الذي يفعّل فحص الإبطال. البوابة التي تتحقق من السلسلة لكنها لا تسأل عن الإبطال أبدًا تطبّق سياسة مختلفة عن تلك الموجودة في وثائقك، ولا تثبت أي لقطة شاشة لسلسلة شهادات العكس. يكتب OpenVPN الخيار crl-verify؛ ويبقي strongSwan عمليات بحث CRL وOCSP ضمن إعداد CA، حيث تُضبط crl_uris أو ocsp_uris. إذا لم تستطع الإشارة إلى أحدهما، فافترض غياب الفحص.

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

الخطوة 5: أبطل شهادة واحدة عن قصد

خذ شهادة اختبار، وأبطلها عبر القناة نفسها التي يستخدمها الإنتاج، واسأل المستجيب مباشرة. يجب أن يُبلّغ openssl ocsp -issuer ca.pem -cert old.pem -url http://ocsp.example.net -resp_text عن Cert Status: revoked مع وقت إبطال، وإجابة good تعني أن إبطالك لم يصل إلى المستجيب الذي تستعلم عنه عملاؤك. ثم شغّل openssl verify -crl_check -CRLfile issuer.crl -CAfile ca.pem old.pem لترى القرار نفسه عبر مسار القائمة. اقرأ سلسلة السبب بدلًا من رمز الخروج، لأن رفض الإبطال وخطأ السلسلة ينتهيان كلاهما بالفشل.

الخطوة التي تهم فعلًا هي الأخيرة: أعد الاتصال بالملف الشخصي القديم أمام نقطة الإنفاذ الحقيقية وأكد أن الرفض يأتي من الإبطال. ثم أعد الاتصال بشهادة جديدة صالحة لتثبت أنك لم تكسر المستمع فحسب. حذف الملف الشخصي على العميل لا يثبت شيئًا عن قرار الخادم، ولا يفعل ذلك تشغيل openssl verify ناجح على جهاز لا ينهي نفقًا أبدًا. RFC 6960 يحدد ما تحتويه استجابة OCSP المطابقة، بما في ذلك قيم الحالة التي يقرأها هذا الاختبار.

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