فحص شهادة VPN دون استخراج مفتاحها
اقرأ الحقول العامة والتواريخ والبصمات دون طباعة أي مادة مفتاحية. الأمر الآمن يعتمد على ما يحتويه الملف وعلى من يستلم المخرجات.
قراءة الحقول العامة لأي شهادة لا تتطلب أبدًا عرض المفتاح الخاص المطابق لها، والأدوات اللازمة لذلك تأتي مع كل نظام ينهي اتصال VPN. الخطر يكمن في خطوة أسبق: الملف الذي سُلّم إليك قد لا يكون شهادة على الإطلاق. فشهادة PEM وكتلة DER وحزمة PKCS#12 وملف تعريف OpenVPN قد تصل بالاسم نفسه وتحمل مواد مختلفة تمامًا، لذا حدّد نوع الوعاء قبل اختيار الأمر.
ثلاثة أمور تحدد أي أمر يكون آمنًا: ما يحتويه الملف، وما تحتاج إلى قراءته منه، ومن سيرى المخرجات. أخطئ في أي واحد منها، فتتحول عملية الفحص نفسها إلى الحادثة.
أي الملفات الثلاثة وصل إليك
شهادة PEM نص يحتوي على علامتي BEGIN وEND ظاهرتين، وملف DER بيانات ثنائية تحتاج إلى علم تنسيق الإدخال، والحزمة وعاء قد يحمل مفتاحًا إلى جانب الشهادة. الأمر file server.crt يفصل النص عن الثنائي في ثانية، ونظرة على السطر الأول تفصل شهادة مجردة عن ملف تعريف يضمّ شهادة داخله. التخمين هنا هو ما يحوّل الفحص إلى حادثة.
إذا كان الملف ملف تعريف لا شهادة، فتعامل معه كبيان اعتماد حتى يثبت العكس. هذا الافتراض لا يكلف شيئًا، ويمنع الخطأ الأكثر شيوعًا في هذه المهمة بأكملها.
قراءة الحقول العامة لشهادة PEM
بالنسبة إلى شهادة مصرّح لك بفحصها، يطبع الأمر الفرعي x509 مع -noout الحقول التي تختارها ولا شيء غيرها. كبت الجسم هو ما يبقي المخرجات في حدود البيانات الوصفية، وهو أيضًا ما يجعل لصقها في تذكرة آمنًا. المحددات أدناه هي المحددات العامة، وتوثيق openssl x509 يسرد الباقي.
openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256
على شهادة اختبار مولّدة محليًا يطبع ذلك الأمر سطر الموضوع وسطر المُصدر، وزوج notBefore وnotAfter، وبصمة SHA-256 واحدة. تلك الحقول تعرّف الكائن؛ وهي لا تثبت مسار ثقة صالحًا، فذلك مهمة تحقق منفصلة لها أمرها الخاص وجوابها الخاص. وقد يطبع ملف السلسلة الشهادة الأولى فقط ما لم تُكرّر المرور على الملف بنفسك. ومقارنة ملفين بهذه الطريقة تكلف أمرًا واحدًا وتحسم أيّهما يعرضه الطرف الآخر فعليًا.
حزم تحمل مفتاحًا إلى جانب الشهادة
قد يحمل ملف .p12 أو .pfx مفتاحًا خاصًا، ويطبعه أمر التحليل ما لم تكبت ذلك الجزء من المخرجات. مع -nokeys ما زال الأمر نفسه يبلّغ عن بنية الوعاء، بما في ذلك كيس مفتاح مُغطّى، دون إصدار أي مادة مفتاحية؛ وإن أسقطت ذلك العلم ظهرت كتلة مفتاح في طرفيتك وفي سجلّ صدفتك.
openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS
ملف تعريف OpenVPN يضمّ المواد نفسها نصًا، لذا تكون الحدود مرئية إذا عرفت أين تنظر. المواد العامة تقع بين BEGIN CERTIFICATE وEND CERTIFICATE، وأي شيء بين BEGIN PRIVATE KEY وسطر END المطابق له هو المفتاح ويجب ألا يغادر المضيف. ونسخ ملف التعريف كاملًا ينشر الاثنين معًا.
الحصول على القيمة المرجعية من مكان آخر
البصمة المقروءة من الاتصال الذي تحاول التحقق منه لا تثبت شيئًا، لأن الطرف الذي لا تثق به هو من قدّمها. وهذا ليس حجة ضد البصمات؛ بل حجة عن المصدر. قارن القيمة بقيمة حصلت عليها عبر قناة لا يستطيع الطرف الآخر الكتابة فيها، مثل الشهادة المنشورة في مستودع داخلي أو التجزئة المطبوعة في سجل تغيير موقّع.
حيث يقوم مخزن الثقة بالتحقق، فاتركه يفعل ذلك، واقرأ الخطأ الذي ينتجه بدلًا من استبداله بمقارنتك الخاصة. الفرق المهم هو من قدّم المرجع، لا أي دالة تجزئة استُخدمت.
مشاركة النتيجة، وما تفعله بعد هفوة
أرسل خطأ التحقق الدقيق والتواريخ ذات الصلة وتفاصيل الهوية التي يحتاجها المستلم فقط. تبقى أسماء المضيفين الداخلية ومعرّفات الحسابات حساسة حتى في غياب أي مفتاح، وخدمة اللصق العامة هي الوجهة الخاطئة لأي منها. الصق في التذكرة، لا في مخزن مؤقت يشاركه شخص آخر.
إذا ظهرت مادة مفتاحية على الشاشة أو في ملف، فتعامل معها على أنها مخترقة وقم بتدويرها بدلًا من الأمل بأن لا أحد نظر. ثم اكتب الملف الذي فُحص والأمر المستخدم وأين ذهبت المخرجات، لأن ذلك السجل هو ما يحوّل الخوف إلى إجراء. التدوير رخيص مقابل كلفة افتراض أن لا أحد احتفظ بلقطة شاشة، والسجل نفسه يخبر المهندس التالي بالملفات التي مُسّت أصلًا. افعل الأمرين قبل إغلاق التذكرة.