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

نص الخطأ هو التشخيص

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

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

إذا كان الفشل يتغير بين المحاولات، فلديك احتمال ثالث: أكثر من عقدة واحدة خلف الاسم نفسه.

فحوص الاسم: ما يقارنه العميل

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

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

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -dates -ext subjectAltName

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

انتهاء الصلاحية: ساعة من تقرأ

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

قارن تواريخ الشهادة بتوقيت UTC على العميل قبل أن تستنتج أي شيء:

openssl x509 -in cert.pem -noout -dates
date -u

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

لماذا يكشف إصلاح أحدهما الآخر

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

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

هذه التفصيلة هي ما يحول تذكرة متقطعة إلى تذكرة قابلة لإعادة الإنتاج.

أثبت ذلك باتصال جديد

بعد الإصلاح، افتح اتصالا جديدا بدلا من استئناف اتصال قديم، وتأكد من أن المرحلة التي كانت تفشل أصبحت تنجح. ثم تأكد من أن النفق ينقل الحركة فعلا، لأن مصافحة ناجحة ليست مسارا عاملا.

احفظ مرحلة الخطأ بدقة وتفاصيل الشهادة مع التذكرة.

هذا السجل هو ما يمنع الشخص التالي من إعادة تعيين كلمات مرور الحساب من أجل مشكلة شهادة. فالهوية والصلاحية سؤالان منفصلان، وRFC 5280 هو المرجع لكيفية تقييم الثاني.

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