الطريقة المدعومة لإضافة "IncludeSubdomain" إلى ترويسات STS

مرحباً بالجميع،

بالنسبة لتثبيتات Discourse المستضافة ذاتيًا الحالية لدينا، نحتاج إلى إضافة “IncludeSubDomains” إلى رؤوس STS الخاصة بنا نظرًا لأن هذا هو التوقع من الماسحات الضوئية الداخلية لدينا.

في السابق، حققت ذلك باستخدام بعض أوامر sed في app.yml في الأوامر المخصصة بعد البناء لتحديث /etc/nginx/conf.d/discourse.conf لتضمين 'add_header Strict-Transport-Security “max-age=31536000; includeSubDomains” always;

بالإضافة إلى:

 - replace:
      filename: "/etc/nginx/conf.d/outlets/discourse/20-https.conf"
      from: /add_header Strict-Transport-Security.+/
      to: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
      global: true

  - replace:
      filename: "/etc/nginx/conf.d/outlets/server/20-https.conf"
      from: /add_header Strict-Transport-Security.+/
      to: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
      global: true

هذا كان يعمل سابقًا. ومع ذلك، توقف عن العمل. قرأت أن إنشاء ملف منفذ (outlet file) جديد يجب أن يسمح لي بإضافة هذا باستخدام:

hooks:
  after_code:
    - file:
        path: /etc/nginx/conf.d/outlets/server/90-hsts.conf
        chmod: 444
        contents: |
          add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

ومع ذلك، ينتهي الأمر بوجود رأسين لـ STS (واحد من قالب SSL والآخر من قالبي الجديد). هل هناك طريقة أفضل للقيام بذلك حتى لا ينتهي بي الأمر برأسين لـ STS؟ كنت أعتقد أن nginx سيحترم آخر رأس تمت إضافته، ويتجاهل رأس قالب SSL الذي يحتوي فقط على max-age=31536000; ، فهل هذا عيب؟ شكرًا لأي إرشادات يمكنكم تقديمها.

هل استخدام set_header بدلاً من add_header يحل المشكلة؟

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

سأجرب هذا وأعود إليكم :slight_smile:

إذا استخدمت set_header أحصل على خطأ SSL عند إعادة البناء، حيث لا يتم التعرف على الشهادة وتظهر رسالة “connection refused” عند محاولة تحميل صفحة المنتدى.

بعض المعلومات الإضافية، نحن نستخدم شهادة SSL خاصة بنا.

هذان الخطأان يستبعد أحدهما الآخر…

عذرًا، لا يحتوي nginx على set_header - لقد أخطأت في التذكر وهو من أداة أخرى.

الخيار الأسهل هو على الأرجح تعديل templates/web.ssl.template.yml بالقيم الجديدة التي تريدها.

أود أن أفعل ذلك أولاً لأنه الأسهل. بمجرد أن تكتشف الأمر، فإن الشيء الأسهل التالي هو نسخ هذا الملف إلى مكان آخر حتى لا تواجه مشكلات مع تعارض git معه. سيكون الحل الأفضل هو دمج استراتيجيتك الحالية مع سطر آخر لإزالة الإعداد المتعارض الآخر.

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

شكراً لمساعدتكما!