STSヘッダーに「IncludeSubdomain」を追加するサポートされている方法

皆さん、こんにちは。

現在セルフホストしているDiscourseインスタンスについて、社内スキャナーの要件により、STSヘッダーに「IncludeSubDomains」を追加する必要があります。

以前は、ビルド後のカスタムコマンドでapp.yml内のsedコマンドを使用して、/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

これは以前は機能していましたが、機能しなくなりました。新しいアウトレットファイルを作成することで、以下を使用して追加できると読みました。

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;

しかし、これによりSSLテンプレートからのものと新しいテンプレートからのものの2つのSTSヘッダーが存在することになります。2つのSTSヘッダーが発生しないようにするためのより良い方法はありますか?Nginxは最後に追加されたヘッダーを尊重し、max-age=31536000; のみを含むSSLテンプレートのヘッダーは無視するはずなので、これは欠陥でしょうか?ご指導いただければ幸いです。

add_headerの代わりにset_headerを使用すると問題は解決しますか?

「いいね!」 1

試してみます、そしてご報告しますね :slight_smile:

set_headerを使用すると、再構築時にSSLエラーが発生し、証明書が認識されず、フォーラムページを読み込もうとすると「接続が拒否されました」というメッセージが表示されます。

さらに詳しい情報として、独自のSSL証明書を使用しています。

これら2つのエラーは相互に排他的です…

申し訳ありません、nginxにはset_headerがありません。記憶違いで、それは別のツールからのものでした。

最も簡単なオプションは、おそらくtemplates/web.ssl.template.ymlを希望する新しい値で編集することです。

「いいね!」 1

まず、それが最も簡単なので、それを試すことをお勧めします。それができたら、次に簡単なことは、gitとの競合による問題を避けるために、そのファイルを別の場所にコピーすることです。最善の解決策は、現在の戦略と、競合する他の設定を削除するための別の行を組み合わせることでしょう。

「いいね!」 1

お二人とも、ご協力ありがとうございます!

「いいね!」 1