لماذا يتم تجديد الشهادة المستضافة ذاتيًا محليًا، لكنها تفشل من الإنترنت؟

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

قد تُجدَّد الشهادة محليًا، لكنها تفشل علنًا عندما يتعذر على جهة ACME الوصول إلى التحدي أو التحقق منه عبر المسار المتاح على الإنترنت.

على أجهزة NAS أو الخوادم المنزلية المستضافة ذاتيًا، قد يؤكد الاختبار المحلي أن Certbot أو acme.sh أو الوكيل العكسي يستطيع إنشاء ملفات التحدي والوصول إلى إعداداته الخاصة. لكن الإصدار العام يضيف متطلبات مختلفة: يجب أن يشير DNS الموثوق إلى العنوان الصحيح، وأن يكون مسار IPv4 أو IPv6 المحدد قابلًا للوصول، وأن يمرر جهاز التوجيه والجدار الناري طلب التحقق، وأن يقدّم الوكيل العكسي رمز التحدي المطابق تمامًا قبل أن تتدخل عمليات إعادة التوجيه أو مسارات التطبيق.

افصل بين نجاح العميل المحلي والتحقق العام من النطاق

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

تحدد حالة شائعة في Nginx Proxy Manager إمكانية الوصول إلى المنفذ العام 80 باعتبارها أول متطلب ينبغي التحقق منه عند فشل تحدي HTTP رغم عمل واجهة الوكيل المحلية.

سجّل نوع التحدي، واسم المضيف، وعنوان URL للتحقق، والعنوان الذي تم حله، ورسالة خطأ جهة إصدار الشهادة حرفيًا. تابع فقط من أول فشل خارجي—بحث DNS، أو اتصال TCP، أو حالة HTTP، أو عدم تطابق الرمز، أو التحقق الثانوي—بدلًا من فرض التجديد مرارًا من دون أدلة جديدة.

قارن سجلات A وAAAA الموثوقة بالمسار الفعلي للخادم

استعلم عن كل اسم مضيف للشهادة عبر DNS الموثوق وسجّل إجابتي A وAAAA. قارن بينهما وبين عنوان IPv4 العام الحالي لجهاز التوجيه، وعنوان IPv6 القابل للوصول للخادم، والوكيل الذي يقدّم التحدي فعليًا.

لم تنجح حالة تجديد في Virtualmin إلا بعد إزالة سجل AAAA منشور كان يوجّه التحقق إلى مسار IPv6 معطل، موضحةً كيف يمكن لـ مسار تحقق AAAA معطل أن يتغلب على إعداد IPv4 سليم بخلاف ذلك.

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

اختبر عنوان URL الدقيق لتحدي HTTP من خارج المنزل

بالنسبة إلى HTTP-01، ضع ملف اختبار غير ضار ضمن المسار المهيأ /.well-known/acme-challenge/ واطلبه من خلال بيانات الهاتف المحمول أو شبكة خارجية أخرى باستخدام اسم مضيف الشهادة عبر HTTP.

يوضح تقرير عن الاستضافة الذاتية لـ Home Assistant كيف يمنع تحدي HTTP المحظور من مزود خدمة الإنترنت التحقق عبر HTTP، حتى عندما تعمل الخدمة محليًا.

يجب أن يصل الطلب الخارجي إلى الرمز الصحيح من دون مصادقة، أو صفحة احتجاز، أو صفحة تسجيل دخول لجهاز التوجيه، أو خطأ 404 من التطبيق، أو إعادة توجيه إلى وجهة يتعذر الوصول إليها. وإذا لم يُفتح منفذ TCP 80 مطلقًا، فتحقق من مزود خدمة الإنترنت، وCGNAT، وإعادة التوجيه في جهاز التوجيه، وجدار حماية المضيف، ومستمع الوكيل قبل تغيير عميل ACME.

تحقق من أن الوكيل العكسي وWebroot يقدمان الرمز نفسه

قارن مسار الرمز الذي يكتبه عميل ACME مع نظام الملفات أو المستجيب المؤقت الذي يستخدمه المضيف الافتراضي العام. فقد تجعل الحاويات، وعمليات الربط، وشبكات الوكيل المنفصلة العميل يكتب إلى دليل بينما يقدّم NGINX أو Caddy المحتوى من دليل آخر.

افحص سجل وصول الوكيل أثناء طلب تحدٍّ خارجي واحد. فالطلب الذي يصل لكنه يعيد 404 يشير إلى عدم تطابق المسار أو webroot؛ بينما يشير 401 أو 403 إلى المصادقة أو التصفية؛ ويشير 502 إلى اعتماد غير ضروري على خدمة خلفية ضمن مسار التحدي.

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

تحقق من CGNAT والجدران النارية وإمكانية الوصول من مواقع متعددة

قارن عنوان WAN في جهاز التوجيه بعنوان IPv4 العام، وتأكد من إمكانية الوصول إلى منفذ التحقق من أكثر من شبكة خارجية. فقد ينجح اختبار NAT loopback المحلي حتى عندما لا تصل حركة الإنترنت غير المطلوبة إلى جهاز التوجيه مطلقًا.

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

أزل الحظر الجغرافي، ومرشحات الدول، وقواعد الرفض المؤقتة، وحدود المعدل من مسار التحدي الضيق أثناء التحقق. وإذا كان الاتصال المنزلي خلف CGNAT أو كان مزود خدمة الإنترنت يحظر المنفذ المطلوب، فاستخدم DNS-01 أو تصميم تحقق صادرًا بدلًا من إضعاف قواعد الجدار الناري غير المرتبطة.

اختر نوع التحدي المتوافق مع حدود الشبكة

احتفظ بـ HTTP-01 عندما يكون DNS العام صحيحًا ويستطيع المنفذ 80 الوصول إلى مستجيب التحدي بشكل موثوق. واستخدم DNS-01 عندما لا تتوفر إمكانية الوصول الوارد، أو تكون شهادات wildcard مطلوبة، أو يجب أن تظل الخدمة خاصة.

تساعد مقالة ZimaSpace حول كيفية تسبب CGNAT في حظر التحقق الوارد على تحديد الحالات التي يكون فيها تغيير طريقة ACME أنسب من إصلاح الوكيل المحلي.

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

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.