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

تعديل: تحويل هذا إلى خطأ. تم تعطيل Force_https الآن في المواقع التي كانت مفعلة فيه سابقًا، مما يسبب مشاكل.


قضيت وقتًا طويلًا في تصحيح موقع حيث “لا تعمل التحميلات”. بعد المرور على قائمة طويلة من الأمور الواضحة (إعادة البناء، وضع الأمان، النظر في الإضافات غير القياسية)، لاحظت أخيرًا تحذيرًا بشأن المحتوى المختلط وقمت بتفعيل force_https، وعاد كل شيء للعمل.

كنت أعتقد أنه قبل عام أو عامين كان force_https مفعّلًا افتراضيًا، لكنني سمعتُ مؤخرًا (أو ربما رأيتُ) عدة مرات أن الأمور تعطلت لأن force_https لم يكن مفعّلًا.

هل هناك سبب لعدم تفعيله افتراضيًا؟
[/quote]

قضيت وقتًا طويلًا في تصحيح موقع حيث “لا تعمل التحميلات”. بعد المرور على قائمة طويلة من الأمور الواضحة (إعادة البناء، وضع الأمان، النظر في الإضافات غير القياسية)، لاحظت أخيرًا تحذيرًا بشأن المحتوى المختلط وقمت بتفعيل force_https، وعاد كل شيء للعمل.

كنت أعتقد أنه قبل عام أو عامين كان force_https مفعّلًا افتراضيًا، لكنني سمعتُ مؤخرًا (أو ربما رأيتُ) عدة مرات أن الأمور تعطلت لأن force_https لم يكن مفعّلًا.

هل هناك سبب لعدم تفعيله افتراضيًا؟

إعجاب واحد (1)

يتم تفعيله تلقائيًا في ملف discourse.conf إذا كان هناك شهادة صالحة.
وهذا صحيح منذ عام أو عامين تقريبًا.

grep -q 'force_https' "/var/www/discourse/config/discourse.conf" || echo "force_https = 'true'" >> "/var/www/discourse/config/discourse.conf"

إعجاب واحد (1)

أهلاً! شكراً لك، ريتشارد.

إذن أنا لستُ أجنّ.

المشكلة هي أن اختبار الشهادة الصالحة يفشل:

# openssl verify -CAfile ca.cer fullchain.cer 
O = Digital Signature Trust Co., CN = DST Root CA X3
error 10 at 3 depth lookup: certificate has expired
error fullchain.cer: verification failed

ثم، إذا قمت بإزالة mozilla/DST_Root_CA_X3.crt من /etc/ca-certificates.conf ونفذت أمر update-ca-certificates، سأحصل على هذا:

C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error fullchain.cer: verification failed

تظهر الشهادة بشكل صحيح في المتصفح. وقد أعيدت بناء الحاوية اليوم (لذا يجب أن تحتوي على شهادات الجذر المحدثة).

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

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

إعجاب واحد (1)

نعم، يبدو أن هذا الأمر مرتبط بانتهاء صلاحية شهادة الجذر الخاصة بـ LetsEncrypt، خاصة إذا بدأ هذا الأمر بعد يوم الجمعة الماضي فقط.

ماذا يظهر أمر openssl version (داخل حاوية Docker)؟ (بسبب هذا).

إعجابَين (2)
OpenSSL 1.1.1d  10 Sep 2019

ربما يحتاج الأمر إلى “إضافة ISRG Root X1 إلى مخزن الثقة”؟ لكنني أرى mozilla/ISRG_Root_X1.crt في ca-certificates.conf.

إعجاب واحد (1)

يا إلهي. لقد قضيت يومين في تصحيح مشكلة اعتقدت أنها مشكلة معقدة تتعلق بـ Rails و Ansible و Python، لكن اتضح أن الخادم الذي كان يحتوي على force_https مفعّل لم يعد كذلك، وتم إرسال مجموعة من الطلبات إلى http://myserver بدلاً من https://myserver.

يبدو هذا وكأنه خلل برمجي.

إعجابَين (2)

نعم، هذه بالفعل علة.

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

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

acme.sh مُقيَّد بالإصدار 2.9.0 رابط بينما الإصدار الرئيسي (master) هو 3.0.1 ويحتوي على ميزة لتحديد سلسلة افتراضية، وأظن أنها قد تكون مرتبطة بهذه المشكلة.

3 إعجابات

مرحبًا @Falco. هل تود إلقاء نظرة على هذا؟ يبدو أنك ملم بهذه المسائل. لقد حاولت فهم هذا لساعات عدة خلال الأسبوعين الماضيين ولا زلت لا أفهم ما يحدث.

إعجاب واحد (1)

نعم، لقد كلفتُ نفسي بالمهمة خلال عطلة نهاية الأسبوع. لدينا عطلة ممتدة هنا، لكنني سأقوم بالنظر في الأمر هذا الأسبوع في أقرب وقت ممكن.

إعجابَين (2)

أهًا. هذا هو الجزء الذي فاتني. عذراً لإزعاجك إذن.

انتهت عطلة نهاية الأسبوع الممتدة لدينا للتو، ولم يكن يوم سيدة الأباريسيدا في تقويمي. لكنني الآن أعرف.

شكرًا لك.

إعجابَين (2)

تم إصلاح ذلك عبر

5 إعجابات

شكرًا لك يا @Falco على جهدك الكبير في هذا الأمر :slight_smile:

إعجابَين (2)