ملفّ DH أم مفتاح tls-auth؟ التمييز بين ملفَّي OpenVPN
أحد الملفّين يحمل وسائط زمرة علنية، والآخر مادّة سرّية مشتركة. ثلاثة شروط تحدّد التوجيه الذي ينتمي إليه كلٌّ منهما.
ملفّان وتوجيهان، وعادة تسمية كلٍّ منهما باسم الشيء الذي يضبطه. هكذا ينتهي dh.pem في سطر tls-auth ويفشل العميل برسالة عن صيغة مفتاح غير متوقّعة. القرار أمامك ليس أيّ الملفّين أقوى. بل أيّ دور يحتاجه النشر فعلاً، وثلاثة شروط تحسمه: أيّ تبادل مفاتيح ستتفاوض عليه حزمة TLS لديك، وهل تريد مصادقة قناة التحكّم أصلاً، وهل يجب أن تبقى المادّة سرّية.
أجب عن هذه بالترتيب وسيجيب سؤال الملفّ عن نفسه. تجاهلها فتبدأ أسماء التوجيهات تبدو قابلة للتبادل، وهي بالضبط الحالة التي تأتي منها الغلطة.
اقرأ التسمية قبل اسم الملف
السطر الأول من الملفّ أكثر إفادة من اسمه، لأن الاسم عرف بشري أمّا التسمية فينتجها الأداة. تحمل وسائط Diffie-Hellman تسمية PEM هي BEGIN DH PARAMETERS. أمّا المفتاح الساكن في OpenVPN فبنية مختلفة تماماً، لها رأسها وحمولتها السداسية.
إعادة التسمية لا تحوّل شيئاً. فملفّ الوسائط المسمّى ta.key يبقى وسائط، والمفتاح الساكن المسمّى dh.pem يبقى مفتاحاً ساكناً؛ يقرأ المحلّل المحتوى ويرفض عدم التطابق. تحقّق قبل أن تعدّل الملفّ الشخصي:
head -n 1 dh.pem
head -n 1 ta.keyثلاثة شروط تحدّد أيّ ملفّ تحتاج
الشرط الأول هو التبادل. تحتاج مصافحة Diffie-Hellman ذات الحقل المنتهي إلى زمرة، وتوجيه dh هو حيث يسمّي الخادم وسائطها. أمّا مصافحة المنحنى الإهليلجي فلا تحتاج ذلك الملفّ إطلاقاً، لأن المنحنى هو مجموعة الوسائط. إذا كان خادمك يتفاوض على أجنحة ECDHE وحدها، فملفّ DH وزن ميت لا قوة إضافية.
الشرط الثاني هو مصادقة قناة التحكّم، وهي ميزة منفصلة بمادّتها الخاصة. ملفّ tls-auth مفتاح ساكن مشترك يحمله الطرفان، يُستعمل لتوقيع حزم قناة التحكّم كي لا يتمكّن طرف غير موثّق من إتمام المصافحة أصلاً. وهو موجود سواء استعملت DH ذا الحقل المنتهي أم لا، ولا علاقة له بوسائط الزمرة.
الشرط الثالث هو السرّية والتوزيع. يجوز نشر وسائط DH دون إضعاف الجلسة، لأن القيم السرّية تُولَّد لكل مصافحة ولا تغادر الطرفين أبداً. أمّا المفتاح الساكن فلا يجوز نشره: فهو البايتات نفسها على الطرفين، ولا يتغيّر من تلقاء نفسه، ومن يحمله يستطيع إنتاج توقيعات صحيحة لقناة التحكّم. وهذان الجوابان يشيران إلى قواعد تعامل مختلفة تماماً، ولهذا يمكن أن يبقى أحد الملفّين في مستودع والآخر لا.
ولّد المادّة الصحيحة لكلّ دور
استعمل الأداة التي تنتج الصيغة التي يتوقّعها التوجيه بدل التحويل بينهما. فمن أجل المفتاح المشترك في OpenVPN 2.6، تذكر الصيغة المكتوبة من المولّد الغرض صراحةً.
openvpn --genkey tls-auth ta.keyذلك الأمر ينشئ مادّة سرّية جديدة؛ وهو لا يصلح مفتاحاً موجوداً ولا يفحصه، وإعادة تشغيله تعطيك مفتاحاً مختلفاً لا يملكه الأطراف الآخرون. انسخ الملفّ الناتج إلى الأقران الذين يحتاجونه عبر قناة تستعملها لأي سرّ مشترك، وأبقِ عرف الاتجاه متّسقاً: مع tls-auth يستعمل أحد الجانبين key-direction 0 والآخر key-direction 1.
وسائط DH، حين تحتاجها، تأتي من توليد الوسائط لا من مولّد مفاتيح، ومصدرها مهمّ حتى لو كان الناتج علنياً. فالزمرة المسحوبة من مصدر مجهول لا تصبح موثوقة بمجرّد كونها علنية؛ يجب أن تبقى زمرة يتّفق عليها أقرانك وإحدى لا يُضعفها حجمها أو بناؤها.
ماذا يعني dh none وماذا لا يعني
dh none توجيه حقيقي بمعنى ضيّق: لن يُحمَّل أيّ ملفّ وسائط لحقل منتهٍ، لأن المصافحة تستعمل Diffie-Hellman بالمنحنى الإهليلجي. وهو ليس اختصاراً لـ«تخطّي خطوة DH» بمعنى إضعاف أيّ شيء، وبالتأكيد لا يطلب من OpenVPN قبول ملفّ آخر بديلاً.
خطأان ينجمان عن قراءته قراءةً خاطئة. الأول افتراض أنّ dh none يزيل الحاجة إلى tls-auth، بينما يضبط الاثنان شيئين مختلفين. والثاني إبقاء سطر dh قديم بجانب إعداد منحنٍ فقط ثم التساؤل أيّ ملفّ يستعمله الخادم فعلاً؛ فإن كان التوجيه موجوداً يُقرأ الملفّ، ومسار معطوب هناك يفشل الإقلاع لسبب لا علاقة له بالتبادل الذي سيتفاوض عليه.
إذا كان الملفّ الخاطئ قد نُشر بالفعل
استعد السرّ المقصود من مالك الملفّ الشخصي واترك التحقّق من الشهادة كما هو أثناء ذلك. فالفشل عدم تطابق في الصيغة لا فشل في الثقة، وتعطيل التحقّق لتجاوز الخطأ يستبدل مشكلة إقلاع بمشكلة صامتة.
ثم افصل الحادثتين اللتين يميل الناس إلى دمجهما. نشر ملفّ وسائط DH يكاد يكون غير ضارّ، لأن الوسائط علنية بالتصميم. أمّا كشف مفتاح tls-auth فحدث آخر: المفتاح يصادق على حزم قناة التحكّم لكلّ قرين يحمله، لذا يجب تنسيق الاستبدال عبر النشر كلّه لا تطبيقه على مضيف واحد.
فحص من خمس دقائق يحسم أيّ حالة أنت فيها: اقرأ السطر الأول من كلّ ملفّ، وتأكّد من التوجيه الذي يشير إليه، وتأكّد من أنّ توزيع الملفّ يطابق ما تتطلّبه المادّة. هذا عمل أصغر من إعادة توليد PKI عاملة، وهو ما كانت الشروط الثلاثة تشير إليه طوال الوقت.