Web技術 ネットワーク技術

HSTS有効化時に確認するべきこと

HSTSEnableIcatch

前回はHSTSについて取り上げました。
今回はHSTS有効化時に必要になる検証事項などを取り上げています。
私の知見をベースにしているため、環境に応じて検証事項を変更してください。
次回はHSTSを検証する一連の設定方法を紹介します。

有効化前に確認すべきこと

HSTS有効化の対象サイトとブラウザの列挙

影響を受けるサイトとサイトと想定するブラウザを列挙します。
ブラウザを列挙しておくのは、HSTSはUAを制御するヘッダーのため、ブラウザによって利用可否が決まるためです。

  1. HSTSが有効化されるサイト(例)
    • 例: example.com, www.example.com
  2. 対象のブラウザ(例)
    • 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を有効化している場合)ほかのドメインへの影響を確認します。

試験の要件として、「ブラウザの実装をどこまで信用するのか」を考える必要がありますが、この辺りを押さえておけば問題ないと思われます。

検証環境を作る手順を次回紹介します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です