7. Server Processing Model (サーバー処理モデル)
本セクションでは、HSTSホスト実装の処理モデルについて説明する。このモデルには2つの側面がある: 1つ目は、セキュアなトランスポート (TLS [RFC5246] またはSSL [RFC6101]; セクション14.1 ("Underlying Secure Transport Considerations") も参照) を介して受信したHTTPリクエストメッセージの処理ルール、2つ目は、非セキュアなトランスポート (例えば、TCP) を介して受信したHTTPリクエストメッセージの処理ルールである。
7.1. HTTP-over-Secure-Transport Request Type (セキュアトランスポート経由のHTTPリクエストタイプ)
セキュアなトランスポートを介して伝達されたHTTPリクエストに応答する際、HSTSホストは、セクション6.1 ("Strict-Transport-Security HTTP Response Header Field") で指定された構文を満たさなければならない (MUST) STSヘッダーフィールドをそのレスポンスメッセージに含めるべきである (SHOULD)。STSヘッダーフィールドを含める場合、HSTSホストはそのようなヘッダーフィールドを1つだけ含めなければならない (MUST)。
特定のUAのコンテキストにおいて、特定のホストを既知のHSTSホストとして確立することは、セキュアなトランスポート上で実行されるHTTPを介して、少なくとも1つの有効なSTSヘッダーフィールドを (本仕様に従って) 正しくUAに返すことによって行うことができる (MAY)。クライアントにプリロードされた既知のHSTSホストのリストなど、他のメカニズムを使用することもできる (MAY); たとえば、セクション12 ("User Agent Implementation Advice") を参照。
注 (NOTE): STSヘッダーフィールドを含めることが"すべきである (SHOULD)"と規定されているのは、特定のHSTSホストを代表してSTSヘッダーフィールドを統一的に発行することが困難な場合がある、さまざまなサーバー側およびネットワーク側のキャッシングおよび負荷分散構成に対応するためである。
7.2. HTTP Request Type (HTTPリクエストタイプ)
HSTSホストが非セキュアなトランスポートを介してHTTPリクエストメッセージを受信した場合、永続的なリダイレクトを示すステータスコード (例えば、ステータスコード301 ([RFC2616] セクション10.3.2)) を含むHTTPレスポンスメッセージを送信すべきであり (SHOULD)、HTTPリクエストの元の有効リクエストURI (セクション9 ("Constructing an Effective Request URI") を参照) を含むLocationヘッダーフィールド値を、必要に応じてURIスキームが"https"になるように変更したもの、またはローカルポリシーに従って生成されたURIスキームが"https"であるURIを送信すべきである (SHOULD)。
注 (NOTE): 上記の動作が"すべきである (SHOULD)"であり"しなければならない (MUST)"ではない理由は以下の通り:
-
サーバー側の非セキュアからセキュアへのリダイレクトのリスク [OWASP-TLSGuide]。
-
サイトのデプロイメント特性。たとえば、サードパーティコンポーネントを含むサイトは、非セキュアなトランスポートを介してアクセスされたときにサーバー側の非セキュアからセキュアへのリダイレクトを実行すると正しく機能しない場合があるが、セキュアなトランスポートを介して統一的にアクセスされると正しく機能する。後者は、HSTSをサポートするUAがすでに (任意の手段、例えば以前のやり取りまたはUA構成によって) サイトを既知のHSTSホストとして記録している場合の状況である。
HSTSホストは、非セキュアなトランスポートを介して配信されるHTTPレスポンスにSTSヘッダーフィールドを含めてはならない (MUST NOT)。