يمكنني أن أؤكد أن تجديد letsencrypt يفشل. لقد كنت أدير تثبيت Discourse مستضاف ذاتيًا لسنوات، وبشكل غريب للغاية فشل التجديد بالنسبة لي مرتين متتاليتين خلال الشهرين الماضيين. كانت المرة الثانية هذا الصباح، لذلك بدأت في التحقيق.
لقد تتبعت الأمر إلى الالتزامين التاليين:
والسطر ذي الصلة المرتبط:
هناك مشكلتان، أعتقد.
أولاً، يتم تحويل return 301 https://${DISCOURSE_HOSTNAME}$request_uri; إلى return 301 https://<اسم الخادم الخاص بي> بدون $request_uri في النهاية. لقد تحققت من التثبيت المستضاف ذاتيًا، وكذلك من تثبيت صديق مستضاف ذاتيًا تم إعداده في الأسبوع الماضي. لا أفهم كيف يعمل قالب Discourse، لذلك لا أعرف سبب حذفه.
ثانياً، كما ذكر @lessLost، فإن إعادة التوجيه 301 خارج كتلة الموقع. أعتقد أن إعادة التوجيه على مستوى الخادم تتجاوز جميع كتل الموقع. يستخدم LetsEncrypt http للتجديدات. ومع ذلك، فإن أي محاولة لـ curl -I http://YOUR_DOMAIN/.well-known/acme-challenge/test ستعيد 301 إلى https، بدلاً من 404 (وهو السلوك المتوقع؛ نحن نريد 404 وليس 301).
لقد أصلحت هذا يدويًا في التثبيت المستضاف ذاتيًا، ولكني أتوقع أن أي تحديث سيتجاوز تغييراتي. لسوء الحظ، لا أفهم القوالب بما يكفي لتقديم طلب سحب @pfaffman — وإلا كنت سأفعل ذلك أيضًا.
تم التعديل للإضافة:
أعتقد أن هذا خطأ —
أنا متأكد تمامًا من أن LetsEncrypt يستخدم http افتراضيًا (لأسباب واضحة، إذا كانت الشهادة منتهية الصلاحية فلا يمكن تجديدها!) ولكن وضع إعادة التوجيه 301 على مستوى كتلة الخادم يجبر جميع الطلبات على إعادة التوجيه 301 إلى https، وهو ما يتعارض مع استراتيجية التجديد هذه.