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

ما الذي تحتويه مساحة عمل جهة الشهادات

دليل PKI هو حالة المُصدِر لا إعداداته. يحمل مفتاح جهة الشهادات الخاص وشهادتها، وملف تسلسل، وفهرسًا للشهادات الصادرة، والمواد الخاصة بكل هوية أُنتجت منها.

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

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

ما تقرأه الخدمة عند بدئها

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

يجب تقييم الملكية مقابل الوحدة التي تُشغّل فعليًا، لا مقابل صدفة root تفاعلية. فالعزل المعلن قد يجعل جزءًا من نظام الملفات للقراءة فقط أو غير مرئي حتى لو نجح اختبار يدوي بصلاحيات root.

systemctl show -p User -p Group -p ReadOnlyPaths [email protected]
stat -c '%a %U:%G' /etc/openvpn/server/server.key
runuser -u openvpn -- test -r /etc/openvpn/server/server.key; echo $?

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

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

لماذا يفشل نسخ مفتاح CA إلى الخادم لاحقًا

تبدأ النسخة عادة كخطوة تشخيص: يريد أحدهم تجديد عميل على مضيف VPN، فيستقر مفتاح CA في /etc/openvpn وينجح التجديد. تنجح المهمة الفورية، ويختفي الحد.

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

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

الحسابات والأدلة والنسخ الاحتياطية

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

بعد الإبطال، حدّث ملف CRL الذي يسميه إعداد الخادم، ثم أعد تحميل الخدمة كي تقرأه الاتصالات الجديدة. توثّق وثائق Easy-RSA تخطيط مساحة العمل وسير التوقيع؛ وقواعد الملكية حولها تبقى قرارًا يخص مضيفك. وتأكد مما حمّلته الخدمة بـ openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate بدلًا من افتراض أن إعادة التحميل التقطته.

اختبار يثبت الفصل

افحص الحالة السلبية لا العاملة فقط. وقّع شهادة من حساب المُصدِر كما صُمم، ثم تأكد أن الحساب نفسه لا يستطيع تشغيل الخدمة أو قراءة مفتاح الخادم الخاص. ثم تأكد أن حساب الخدمة لا يستطيع قراءة مفتاح جهة الشهادات الخاص.

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

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