前回はHSTSについて取り上げました。
今回はHSTS有効化時に必要になる検証事項などを取り上げています。
私の知見をベースにしているため、環境に応じて検証事項を変更してください。
次回はHSTSを検証する一連の設定方法を紹介します。
有効化前に確認すべきこと
HSTS有効化の対象サイトとブラウザの列挙
影響を受けるサイトとサイトと想定するブラウザを列挙します。
ブラウザを列挙しておくのは、HSTSはUAを制御するヘッダーのため、ブラウザによって利用可否が決まるためです。
- HSTSが有効化されるサイト(例)
- 例:
example.com
,www.example.com
- 例:
- 対象のブラウザ(例)
- Google Chrome
特に細かな指定がなければ、普及しているGoogle Chromeでよいかと思っています。
HSTSの有効化状況を確認できる方法の確認
対象のブラウザにおいて、HSTSに関する操作ができないか確認をします。
例えば、Google Chromeではアドレスバーに、[ chrome://net-internals/#hsts ] と入力することで、HSTSに関する操作を行うことができます。
以下のような操作ができることが望ましいです。
- HSTSによって、HTTPSで接続を行うURLがわかること
- HSTSがブラウザで有効化されている状態を、リフレッシュできること
ここでは、上記の操作ができるものを「HSTSステータスチェッカー」と呼称します。
この後の記述はGoogle Chromeで検証することが前提になります。
ブラウザにHTTPSのみを有効化する設定や仕様がないか
Google Chromeでは下記の設定があります。
ブラウザの仕様によりますが、「強制的にHTTPSへ切り替える」などの仕様やHTTP通信時に警告が表示されるものがあります。事前に確認しておきましょう。
本番環境でのHSTSを有効化する作業前後で確認するべきこと
HSTSプリロードがまだ有効化されていないことを前提に試験をします。
作業前
- HSTSステータスチェッカーを使って、検証用のブラウザが対象ドメインのHSTS設定を保持していないこと
検証していると、HSTS設定が残ってしまう可能性があります。検証前に確認しておき、保持している場合には、設定を削除しておきましょう。
作業後
※私は別記事で紹介する方法で、 [ www.example.com ] を検証対象のFQDNにしています。適宜読み替えてください。
- 初回の通信をする前に、ブラウザの開発者ツールを使ってWeb通信の中身をみられるようにしておきます。
ブラウザのデベロッパーツールを開き(F12
キーを押して)、「Network」タブを選択します。
この状態で以下の動作確認を行います。
- HTTPリクエストを行い、HTTPSヘリダイレクトされる処理を確認します。
HTTPのレスポンスヘッダに、 [ Location ] ヘッダがあること、ステータスコード 301であることを確認するとよいです。
- HTTPリクエストのレスポンスヘッダをみて、Strict-Transport-Securityヘッダがないか確認します。
- HTTPSリクエストヘッダのレスポンスヘッダをみて、Strict-Transport-Securityヘッダがあることを確認します。
- Strict-Transport-Securityヘッダが想定通りの値になっていることを確認します。
Strict-Transport-Securityヘッダの値をチェックします。
- 通信を行ったブラウザのHSTSステータスチェッカーで、対象ドメインに対してHSTSが有効になっていることを確認します。
- HTTPを指定して、対象のドメインへリクエストをしたら、HTTPSへ切り替わることを確認します。
ステータスコードが [ 307 Internal Redirect ] であること、レスポンスヘッダに [ Non-Authoritative-Reason: HSTS ] があることを確認します。
Internal Redirectはブラウザがリダイレクトをしていることを示します。
- その他、テスト用の通信を行い、問題なく動作することを確認します。
- (includeSubDomainsを有効化している場合)ほかのドメインへの影響を確認します。
試験の要件として、「ブラウザの実装をどこまで信用するのか」を考える必要がありますが、この辺りを押さえておけば問題ないと思われます。
検証環境を作る手順を次回紹介します。