Strict-Transport-Security(HSTS)
当ページではHTTP Strict Transport Security (HSTS)の概要と、その機能を実現するHTTP通信のレスポンスヘッダ「Strict-Transport-Security」の使い方について紹介しています。
HTTP Strict Transport Security (HSTS)の概要Strict-Transport-Securityヘッダの動作Strict-Transport-Securityヘッダの構文HSTS Preloadリストについて参考
HTTP Strict Transport Security (HSTS)の概要
HTTP Strict Transport Security (HSTS)とは、ユーザがWebサイトに「HTTP」で接続した際、強制的に「HTTPS」へリダイレクトし、以降のそのドメインへの接続はすべてHTTPSでの通信を要求する機能のこと。
HSTSを設定することで、メッセージの内容を通信の途中で傍受されること(中間者攻撃)を防ぐことができる。
Strict-Transport-Securityヘッダの動作
HSTSの機能を実現するために通信のレスポンスにて、「Strict-Transport-Security」ヘッダを付与する。
【上の図に対応する動作手順】
① ユーザがHTTPプロトコルでWebサーバへアクセスする。
② WebサーバはHTTPSプロトコルでアクセスし直すようにレスポンスを返す。
③ ブラウザはHTTPSプロトコルでリクエストを送り直す。
④ Webサーバはコンテンツを返すと共に、Strict-Transport-Securityヘッダを付与する。
⑤ ユーザが再びHTTPプロトコルでWebサーバへアクセスする。
⑥ ブラウザはStrict-Transport-Securityヘッダの有効期限内の場合、HTTPSプロトコルでリクエストを送る。
⑦ Webサーバはコンテンツを返す。
Strict-Transport-Securityヘッダの構文
HTTPのレスポンスヘッダに以下の構文のヘッダを追加することで、HSTSが有効になる。
フィールド値に設定できる値は以下の通り。
値 | 説明 | |
max-age=<秒数> | HTTPS接続を強要する時間(秒)。HSTSの機能を有効にする時間。 | 必須 |
includeSubDomains | サブドメインにも機能を適用する場合に指定する。 | 任意 |
preload | HSTS PreloadリストにWebサイトの登録を要求する場合に指定する。 | 任意 |
HSTS Preloadリストについて
HSTSでは、初回の1回のアクセスはHTTPで通信を行うことになる。
HSTS Preloadリストと呼ばれるリストにサイトを登録することで、初回アクセスでもHTTPSで通信が可能となる。
参考
セキュリティ対策で使われる、その他のヘッダフィールドは以下のようなものがあります。
Strict-Transport-Securityヘッダの詳細は以下を参照!