جرد شهادات VPN: ما يمكن لسجل CA أن يثبته
مجلد على الخادم وسجل CA وقائمة إلغاء وجدول جلسات تجيب عن أسئلة مختلفة. أبقِ هذه السجلات منفصلة عند جرد هويات VPN.
يقبل بوابتك شهادة عميل لم يرها من قبل، لأن ما ضُبطت به هو جهة إصدار موثوقة، والشهادة تصل أثناء المصافحة. هكذا يُفترض أن يعمل البروتوكول، ولهذا أيضاً تُعدّ قائمة ملفات المجلد على الخادم جرداً رديئاً. تعرف جهة الإصدار ما أنشأته، ويعرف الخادم ما اتصل، وتعرف حالة الإلغاء ما سُحب. الجرد الذي يخلط هذه السجلات الثلاث ينتهي إلى ادعاء شيء لم يقله أي منها.
البوابة تثق بجهة إصدار لا بقائمة ملفات
تقارن عملية التحقق شهادة مقدَّمة بمرساة ثقة، لذا تتصل هوية أنشأتها الجهة نفسها أمس دون أن تكون قد وُجدت يوماً على قرص الخادم. لا حاجة لنسخ أي شيء لحدوث ذلك، ولا يوافق عليه أحد يدوياً. لذلك تصف سجلات الخادم نفسها الوصول، لا مجموع الهويات التي يمكن أن تصل.
الفجوة المعاكسة محرجة بالقدر ذاته. قد يحتوي المجلد على شهادات منتهية الصلاحية وشهادات ملغاة وهويات صادرة لأجهزة لم تُنشر قط. عدّ الملفات يجيب عن عدد الملفات الموجودة، وهو سؤال لم يسأله أحد. ابدأ بدلاً من ذلك من السجلات التي تحمل معنى.
أربعة أسئلة، أربعة سجلات مختلفة
يجيب كل نوع من السجلات عن سؤال واحد جيداً وعن غيره بشكل سيئ، ولهذا يبدو التقرير الذي يدمجها مكتملاً بينما هو خاطئ بطريقة محددة. يرتب الجدول أدناه هذه السجلات حسب السؤال الذي تحسمه لا حسب النظام الذي ينتجها.
| Question you are answering | Where the answer lives | How quickly it changes | What it will never show |
|---|---|---|---|
| Was this identity ever created? | The issuer's issuance database | Only when something is issued | Whether the device still exists |
| Is a copy sitting on this host? | The paths you actually inspected | Whenever anyone copies files | Certificates that were never copied here |
| Has the issuer withdrawn it? | Published revocation state | When the issuer next publishes | Withdrawals that are not published yet |
| Is it connected right now? | The live session table | Continuously | Anything about past or future sessions |
أرشيف الشهادات العامة ليس سراً، لأنه لا يحوي مفاتيح خاصة، لكنه ليس قابلاً للمشاركة أيضاً. تكشف الأسماء المميزة وأسماء الأجهزة تفاصيل تشغيلية، وينبغي أن يبقى التقرير مع الجمهور الذي يحتاجه. تبقى المفاتيح الخاصة خارج الجرد كلياً، لأن الجرد يحتاج بيانات وصفية لا بيانات اعتماد.
جهة الإصدار والرقم التسلسلي هما المفتاح المستقر الوحيد
تُعاد الأسماء المميزة للاستخدام وتُعاد أسماء الملفات، لذا قد يدل اسم ميّز جهازاً العام الماضي على جهاز آخر الآن. ليس أي منهما مفتاحاً، والتقرير المبني على أحدهما سيدمج هويتين في سطر واحد في النهاية.
يزيد زوج جهة الإصدار والرقم التسلسلي الشهادة عن غيرها، وكلاهما مأخوذ من الشهادة نفسها. سجّلهما مع الاسم المميز وتواريخ الصلاحية والمصدر الذي جاءت منه النسخة والشخص أو الجهاز المسؤول. أضف حالة الإلغاء والنشر كحقلين منفصلين بأوقات رصد خاصة بهما، لأن الشهادة داخل فترة صلاحيتها ليست مخوّلة تلقائياً. تعيش هاتان الحقيقتان في نظامين مختلفين، ودمجهما يخفي الحالة التي سُحبت فيها هوية بينما لا يزال ملفها يبدو حديثاً.
اقرأ شهادة واحدة في كل مرة
النمط الشامل الذي يتوسع عبر مجلد ليس واجهة دفعية، وهو يخفي أي ملف أنتج أي مخرجات. اقرأ البيانات الوصفية لكل شهادة، واقرأ جانب الإلغاء من مخرجه الخاص. يسرد مرجع OpenSSL x509 الحقول التي تطبعها تلك الخيارات.
openssl x509 -in <cert>.pem -noout -issuer -serial -subject -dates -fingerprint -sha256
openssl crl -in <issuer>.crl -noout -text | head -n 40
في بنية Easy-RSA PKI المُدارة، استعلم عن قاعدة بيانات الإصدار عبر سير العمل الذي تدعمه الأداة بدلاً من افتراض تخطيط مجلد، وأبقِ النسخ الأصلية للقراءة فقط أثناء تجميع الجرد. صيغة السجل منتظمة بما يكفي لعدّ المدخلات الصالحة وسرد المسحوبة دون فتح قاعدة البيانات يدوياً.
grep -c '^V' pki/index.txt
grep '^R' pki/index.txt | cut -f4,5
جرد يصمد أمام الإصدار التالي
التفريغ لمرة واحدة من مجلد يصبح قديماً لحظة إصدار الشهادة التالية، لذا ابنِ التقرير من سير عمل الإصدار واتركه يتحدث كجزء من التشغيل العادي. وهذا أيضاً يجعل التقرير قابلاً للتكرار، وهو ما يهم عندما يختلف شخصان حول ما صدر.
استخدم النتيجة لقرارات التجديد والإخراج من الخدمة لا كتمرين على جدول بيانات. حذف نسخة محلية لا يبطل النسخ البعيدة الموجودة بالفعل. اسحب الهوية عبر سير عمل الإلغاء والتفويض المضبوط، ثم سجّل السحب بتاريخه. الهوية التي اختفت من الخادم لكن جهة الإصدار ما زالت تثق بها لم تُخرج من الخدمة، وهذا الفرق يفصل جرداً دقيقاً عن جرد مطمئن فقط.