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

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

لن تنبهك أدوات الشهادات لديك، لأن التفرد داخل X.509 وتفرد اسم سياسة OpenVPN متطلبان مختلفان يفرضهما نظامان مختلفان.

الخادم يبحث عن اسم، لا عن بصمة

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

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

حيث تتقاطع جهتان على الاسم نفسه

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

الأرقام التسلسلية لا تساعد. يشترط X.509 أن يكون الرقم التسلسلي فريدًا داخل نطاق جهة إصداره، وهذه خاصية من دفتر حسابات تلك الجهة لا هوية عالمية للجهاز. وفحص الموضوع اختبار مختلف أيضًا عن فحص الاسم الشائع: يمكن لشهادتين أن تتشاركا CN مع اختلاف الوحدة التنظيمية، وبالتالي تحملان موضوعين مختلفين. ويمكن أن تظل كل هذه الخصائص قائمة بينما يعيّن الخادم الشهادتين إلى اسم ملف واحد.

تغطي وثائق OpenSSL CA إعداد unique_subject الذي يحكم رأي قاعدة بياناته الخاصة، ونقطة البداية الصادقة هي قراءة إعداد الإصدار لديك بدلًا من افتراض أن إعدادًا افتراضيًا معينًا في EasyRSA أو OpenSSL ينطبق.

احجز الاسم الفعّال قبل التوقيع

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

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

التجديد يعيد استخدام الاسم عن قصد

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

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

أكّد التعيين بالأدوات الموجودة على الجهاز

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

openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf

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

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

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