私は最近、メインサイト(example.com)と2つのサブドメイン(これらをportal.example.comと呼びますwelcome.example.com)。
応答ヘッダーによると、HSTSは各ホストに対して適切に設定されています。
strict-transport-security: max-age=2592000; includeSubDomains
ホストをBurpにロードするときに、Firefoxでセキュリティ例外を作成して、Burpの自己署名SSL証明書を受け入れてHTTPSトラフィックをプロキシすることができました(期待どおり)。ただし、どちらのサブドメインでも、Firefoxで問題なくセキュリティ例外を作成できます。さらに、これにより、メインサイトでHSTSをバイパスできました。いずれかのサブドメインに対してセキュリティ例外が作成されると、example.comのHTTPSトラフィックを問題なくプロキシすることができたためです。
何が欠けていますか?特にincludeSubDomains
に設定されている場合、HSTSはこのアクティビティを禁止すると思いました。
Q:HSTSでオーバーライドが許可されたのはなぜですか?
A:HSTSは、TOFU(Trust-on-first-use)メカニズムです。そして、それは意味します。もしそれを初めて傍受されたなら、あなたはねじ込まれています。 (オースティンが指摘したように)includeSubDomainsヘッダーは親ドメインでは正しくないため、ユーザーエージェントはサブドメインについて何も知りませんでした。また、TLSセットアップはHTTPヘッダーよりも下位のレイヤーにあります。したがって、ブラウザはサーバーのWordのみを取得しました証明書エラーをオーバーライドするおかしなビジネスはありません!すでにそれを実行した後の順序。
HSTSはこの活動を禁止すると思いました
いいえ。不正なCAを信頼できるものとして受け入れると(Firefoxは例外的に異なる動作をしますが、これは実際のところこれだと思います)、すべての賭けは無効になります。
Q:HPKPで固定された証明書は無効になりますか?
A:いいえ。Firefoxは、ローカルにインストールされた非標準のCAによってオーバーライドされた場合、デフォルトでピンをBREAK /強制しません。 (これはSSLインスペクションを可能にするためです。)(ただし、Firefoxを手動で設定して、ピンを壊さないようにすることができます 設定を1から2に変更 。)
HSTSを使用すると、ブラウザはHTTPリンクをHTTPSリンクに自動的に変換します。ただし、間違いや悪用を防ぐために、ブラウザーは保護されたページのHSTSヘッダーのみを受け入れます。
それはあなたのケースに関連するので、HSTS 許可されない ユーザーは、HSTSが有効になったら(安全なページからのみ実行できます)、自己署名証明書を手動で受け入れることができます。これが、example.comが無効な証明書を受け入れることを許可しない理由を説明しています。
さらに、ヘッダーにはincludeSubDomains
ではなくinclude SubDomains
と表示されているため、サブドメインが適切に保護されていないようです( 仕様 で定義されています)。
関連する注記として、 [〜#〜] hpkp [〜#〜] は悪意のある証明書に対する追加の保護を提供できます。