ملف .cer بصفر طول لـ SSL

مرحباً،

أحاول تثبيت Discourse من صفحة GitHub الرسمية، على Ubuntu 22.04 Server LTS - من أحدث AMI في AWS. تم تكوين الشبكة، مع FQDNS المرفق بالمضيف وعنوان IP المرن.

كل شيء يتم نشره بشكل صحيح، ويمكنني الاتصال بمثيل Nginx على المنفذ 80. ولكن، لا يمكنني الاتصال عبر المنفذ 443، والخطأ المتكرر في nginx error.log هو كما يلي:

> 2023/10/09 08:41:12 [emerg] 9342#9342: cannot load certificate "/shared/ssl/discourse.xxxx.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

يظهر المزيد من التحقيق أن ملف .cer بحجم صفر بايت، ويقع في

./shared/standalone/ssl/discourse.XXXX.com.cer

حاوية ملف السجل: app:$/var/log/nginx

هل واجه أي شخص هذه المشكلة من قبل؟ لا يبدو أنها متعلقة بالأذونات، حيث يتم تنفيذ كل شيء تحت بيانات اعتماد sudo.

متحير حقًا بشأن هذا الأمر.

تعديل: لقد حاولت حذف مجلدات /shared/ssl و letsencrypt، وجربت كلًا من إعادة البناء وإعادة التثبيت، وكلاهما بنفس النتيجة.

هل قمت بتشغيل discourse-setup؟ يحاول الاتصال بنفسه للتحقق من أن نظام أسماء النطاقات (DNS) يشير إلى الخادم وأن المنافذ مفتوحة، ولكنه اختبار تقريبي.

إذا قمت بإعادة بناء أكثر من مرة قليلة دون تكوين نظام أسماء النطاقات والمنافذ بشكل صحيح، فستصل إلى حدود معدل Let’s Encrypt. إذا كان هذا هو الحال، وأعتقد أنه كذلك، فستحتاج إلى الانتظار لمدة أسبوع أو استخدام نطاق فرعي مختلف (أو اتباع بعض التعليمات المعقدة لطلب شهادة للنطاق الفرعي الذي تريده وشهادة أخرى).

أعتقد أنه إذا قمت بتشغيل docker logs app، فقد ترى أين يفشل acme في الحصول على شهادة.

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

كنت أواجه هذا الخطأ أثناء تنفيذ ./discourse-setup:
** فشل في التشغيل ** يرجى التمرير لأعلى والبحث عن خطأ سابق

في العديد من المحاولات لإصلاح هذا الخطأ، جربت هذه الأمور:
قمت بتشغيل ./discourse-doctor بدون أي نجاح.
قمت بتشغيل ./launcher rebuild app بدون أي نجاح.
حاولت استكشاف الأخطاء وإصلاحها من داخل الحاوية باستخدام: docker exec -it app /bin/bash
تحتوي صورة الحاوية على أدوات محدودة لاستكشاف الأخطاء وإصلاحها، لذا قرأت السجلات فقط باستخدام هذا الأمر:
less /var/log/nginx/error.log
هنا رأيت العديد من الرسائل التي تحتوي على: [emerg] 2832#2832: لا يمكن تحميل الشهادة
لسبب ما لم أتمكن من العثور على السبب الرئيسي، ولكن عندما خرجت من الحاوية وكتبت:
./launcher logs app من المضيف -
تمكنت من رؤية المزيد من البيانات وفجأة وجدت هذا الخطأ:
“خطأ في إنشاء طلب جديد :: تم إصدار عدد كبير جدًا من الشهادات (5) بالفعل لنفس مجموعة النطاقات هذه خلال الـ 168 ساعة الماضية، حاول مرة أخرى بعد 2024-08-10T12:58:12Z:”
بحثت عن حلول لهذه المشكلة، ولكن بعد ذلك قررت الانتظار للفترة الزمنية المحددة.
بعد انتهاء وقت الانتظار، حاولت مرة أخرى: ./launcher rebuild app
هذه المرة نجح الأمر وتم إنشاء شهادات SSL (*.cer) بنجاح وكان موقعي يعمل.

الدرس المستفاد هنا هو أنه إذا حصلت على شهادة *.cer فارغة، فأنت بحاجة إلى التحقق من سجلات الحاوية باستخدام هذا الأمر من المضيف:
root@host:/var/discourse# ./launcher logs app
قم بالتمرير عبر السجلات وابحث عن “عدد كبير جدًا من الشهادات”
لو كنت أعرف هذا، لكان بإمكاني توفير أيام من البحث :frowning:

الافتراضات التي تم وضعها في ردي:

  • لقد أكدت أن المضيف الخاص بك تم تكوينه بشكل صحيح مع مزود DNS الخاص بك.
  • لقد أكدت البريد الإلكتروني للتسجيل وإعدادات SMTP الخاصة بك.
  • لقد أكدت أن /var/discourse/containers/app.yml تم ملؤه بشكل صحيح.
إعجاب واحد (1)