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

نقطة النهاية تخزّن مراجع، لا شهادات

يستحق هذا الميكانيزم توضيحًا دقيقًا لأنه يفسر الفشل كله. تأخذ create-client-vpn-endpoint ARN لشهادة الخادم وARN لسلسلة شهادة الجذر للعميل، وتحتفظ نقطة النهاية الناتجة بتلك المراجع مع خيارات المصادقة كخصائص ثابتة. لا تقدم واجهة API أي عملية تبدّل شهادة الخادم في نقطة نهاية قائمة.

يمكنك تأكيد الربط دون تخمين. يطبع aws ec2 describe-client-vpn-endpoints --client-vpn-endpoint-ids cvpn-endpoint-0123456789abcdef0 ARN الشهادة، وARN سلسلة الجذر للعميل، ونوع المصادقة، وCIDR العميل، والشبكات الفرعية المرتبطة، وهي المجموعة الكاملة من الخصائص التي سيتعين عليك إعادة إنتاجها. شغّله قبل إعادة الاستيراد وبعده ولن يتغيّر الناتج. وذلك هو الدليل على أن إعادة الاستيراد لم تكن ستنفع أبدًا.

لماذا لا تستطيع إعادة الاستيراد الوصول إلى نقطة النهاية

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

ولهذا أيضًا تبدو العَرَض كأنه عطل شبكة. تفشل مصافحة TLS أو تُعاد قبل تقييم التخويل أصلًا، لذا تبدو مجموعات الأمان والمسارات وقواعد التخويل كلها بريئة، وهي كذلك.

السلسلة جزء من شهادة العميل

النصف الثاني من الفشل يكمن في شهادة العميل، وهو أسهل في التجاهل. يجب استيراد شهادة العميل مع السلسلة التي أصدرتها، رغم أن نموذج الاستيراد يعرض ذلك الحقل كاختياري. بدون السلسلة لا تستطيع نقطة النهاية بناء مسار من شهادة العميل إلى CA الجذر للعميل الذي ضُبطت به، وينتهي الاتصال بإعادة ضبط ناعمة تبدو وكأن جدار حماية يُسقط الحزم. openssl verify -CAfile root-ca.pem client.crt يجيب عن ذلك محليًا في ثانية، وينبغي أن يكون أول أمر تشغّله.

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

إعادة إنشاء نقطة نهاية هي ترحيل

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

الترتيب الذي يحفظ ذلك آمنًا قصير: أنشئ نقطة النهاية الجديدة بنفس CIDR والشبكات الفرعية وقواعد التخويل، وصدّر ملف تعريف جديدًا باستخدام aws ec2 export-client-vpn-client-configuration، وتحقق مع مستخدم واحد. وبعد ذلك فقط تُسحب نقطة النهاية القديمة.

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

رتّب التشخيص

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

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

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

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