ブロギングライフ

ブログサイト運営関連、AdSenseについての情報などを発信しています。

HSTSとは? 推奨される理由とプリロードリスト登録方法

HSTSとは? 推奨される理由とプリロードリスト登録方法

HSTSとは?

サイトをSSL化した後、サーバー側に301 HTTP リダイレクトを使用して、HTTPページにアクセスしようしたユーザーや検索エンジンをHTTPSに転送する設定を行うのが一般的です。しかし、HTTPSのページにアクセスする前に中間攻撃を受けるリスクが依然としてあります。

HSTSは、SSL化したサイトのHTTPページにアクセスしようとしたブラウザに対してSSL/TLSで保護されたHTTPSでアクセスするように通知する機能です。HSTSの設定が行われていると、次回からの訪問ではHTTPからリダイレクトされるのではなく、ブラウザが自動的にHTTPSのページに直接アクセスするようになります。

SSL化を行ったサイトでは、リダイレクトに加えてHSTSをサポートする ことをGoogleは推奨しています。

WebサーバーがWebブラウザに対して、現在接続しているドメイン(サブドメインを含む場合もある)に対するアクセスにおいて、次回以降HTTPの代わりにHTTPSを使うように伝達するセキュリティ機構である。RFC 6797 で規定されている。

HSTSが推奨される理由

301や302 リダイレクトによってHTTPからHTTPSに転送する設定では、リダイレクトされる前、HTTPへのアクセスする間のトラフィックはセキュリティで保護されていないため安全ではありません。

サーバー側でHSTSのレスポンスヘッダーを備えていると、アクセスしてきたブラウザに対して常にSSL/TLSでの通信を行うように通知されます。通知を受けたブラウザは、次回以降、HTTPのままのブックマークや、以前投稿されたHTTPのままのサイトへのリンク(含む他サイトからのリンク)をクリックしても、HTTPでなくHTTPSを強制的に使用するようになります。

HSTSを設定することにより、ユーザーがhttpのアドレスのリンクなどをクリックしても、HTTP経由でなく最初からHTTPSへ訪問するようになるため安全になります。HSTSの設定は、一度アクセスした後から有効となります。

目次に戻る

HSTS プリロードとは

HSTSを備えることで安全性は高まります。しかし、一回目のアクセスの時は安全ではありません。(安全になるのは次回からです。)HSTSプリロードとは、登録済みのサイトでは予め(最初から)SSL/TLSでの通信を行うようにブラウザーに通知する仕組みです。HSTSプリロードで登録されているサイトでは、ブラウザが自動的に最初からHTTPのページへのアクセスをHTTPSで行うようになります。

HSTS プリロードのリストは、Googleによって取りまとめられ、主要なブラウザ(Chrome、Firefox、Safari、IE11とEdge、Opera)で使用されています。(HSTS サポートブラウザ・バージョン一覧)リストに登録されているサイトでは、SSL/TLSを使用することをブラウザ側で予め分かるようになっています。

HSTS プリロードを行うことで、HTTP上での不安全なトラフィックの状態が(最初から)生じない(ハッカーからのHTTPからHTTPへの転送前の中間攻撃を防止する)ため、より安全性が高くなります。

目次に戻る

プリロード リスト登録条件

HSTS プリロードリストに登録するためには、以下の条件を満たしている必要があります。

  • 有効なSSL証明
  • 同一ホストでのHTTPからHTTPへのリダイレクト
  • 全てのサブドメインもHTTPSで提供
  • HTTPS リクエストされるドメイン上にHSTS ヘッダーが設置されていること
    • 最低1088644秒(18週)のマックスエイジ
    • サブドメインを含む指示(includeSubDomains )が指定されていること
    • プリロードの指示が指定(ディレクティブ)されていること
    • HTTPS サイトからの追加リダイレクトがある場合、リダイレクトするサイトにHSTS ヘッダーが含まれていること

詳細はInternet Engineering Task Force (IETF) RFC 6797 をご参照下さい。

目次に戻る

HSTSの設定方法

プリロードを含めたHSTSの設定は、.htaccess に以下のコードを追加します。

<IfModule mod_headers.c>
Header set Strict-Transport-Security “max-age=10886400; includeSubDomains; preload”
</IfModule>

“Header set Strict-Transport-Security”がHSTSのヘッダーの設定コードです。

“max-age=10886400″は、max-ageの設定です。単位は秒になります。10886400秒は18週です。最初は短めに設定して確認を行い、徐々に長くしていくことを推奨しています。プリロードの申請のページでは、max-ageを2年(63072000)まで引き上げてプリロードリストに申請することを推奨しています。

“includeSubDomains”は、サブドメインを含むディレクティブの設定コードです。

“preload”はプリロードのディレクティブです。

上記、コード設定でプリローディングの条件を満たしています。

目次に戻る

HSTSの動作確認方法

HSTSの設定が動作しているかを確認する方法の代表的な例を以下に紹介します。プリロードリストの登録申請時にHSTSの設定の確認が行われるため、プリロードリストへの登録申請を行って、設定確認するのも1つのオプションです。

Search ConsoleのFetch as Googleを使用

Google Search ConsoleでFetch as Google を使用してHTTPのレスポンスを表示するとHSTSの設定が正しくできているかの確認ができます。

Search Console Fetch as GoogleでHSTSの設定を確認

5行目に “Strict-Transport-Security: max-age=63072000; includeSubDomains; preload” が表示されていることから、HTTPのレスポンスヘッダーに無事にHSTSの設定が行われていることが分かります。

Chromeのイベントチェック機能を使用

Chromeのイベントチェックコマンド (chrome://net-internals/#hsts) をアドレスバーに入力して、ドメイン・クエリでHSTSがセットされているかのチェックを行います。

Chrome コマンド イベント HSTSのページ

クエリ・ドメインの欄にHSTSの設定を行ったドメイン名を入力して、実行します。結果が表示されます。以下は表示例です。

クエリでチェックを行ったドメインのHSTSのステータス表示

HSTSの設定で、サブドメインが含まれて設定されていること、マックスエイジが設定されていることが確認できます。

目次に戻る

HSTS プリロード リストへの登録申請方法

HSTS preload list の登録ページ にアクセスします。ページ上部のURL入力欄(下の画面で”example.com”と表示されている部分)に申請するサイトのURLを入力します。

HSTS プリロード リスト 登録フォームのURL入力欄

“Check status and eligibility”のボタンを押すと、サイトがHSTSのプリロード リスト登録条件を満たしているか診断を行います。

診断の結果、条件を満たしていないと、画面が赤色に変わりエラーメッセージが表示されます。

HSTS プリロード診断不合格

上の画面では、HSTS ヘッダーがないため、レスポンスエラーとなったとメッセージがあります。

登録条件を満たしていた場合(診断合格)、診断ボタンの下にStatus(ステータス)に、サイトがまだプリロードされていないこと、HSTS プリロード リストに登録可能である旨のメッセージが表示されます。

HSTS プリロード リスト登録診断合格ページ

下側に申請登録を行う上での確認事項のチェック項目が表示されます。項目の一番目は、サイトのオーナーであること、またはHSTS プリロードすることを(オーナーから)承認されていることについての確認です。

二番目の項目は、このフォームを提出してサイトのプリロードを行うと、全てのサブドメインとネストされたサブドメインは、有効なHTTPS認証がない限りアクセスされなくなることを理解していることについての確認です。

項目の先頭のボックスにチェックを入れて、下の[Submit(申請)]ボタンを押します。正常に登録申請フォームが送信されると、以下の様なメッセージが表示されます。HSTS プリロード リスト登録申請完了メッセージ

申請したサイトが引き続きプリロードの条件を満たしていないとリストから削除されます。数週間後にこのサイトを再び訪問して、申請をおこなったドメインのステータスをチェックしてくださいと記載されています。

また、TLSに問題がないか、SSL Labsの診断テスト を行うことを推奨するメッセージがあります。

目次に戻る

HSTSの設定をするとSSL Labsのテストランクも上がります

SSL Labsのテストには、HSTSの設定も含まれています。以下に添付するSSL レポートは、同じサイトでHSTSの設定前と設定後に行ったテスト結果です。

HSTS設定前のSSLテスト結果

HSTSの設定前の結果は、レーティングがAでした。

HSTS設定前のSSL Labsテスト結果

HSTS設定後のSSLテスト結果

HSTS設定後(含むプリロード)のテスト結果でのレーティングは、A+になりました。レポートには、”HTTP Strict Transport Security (HSTS) with long duration deployed on this server.”の記述があります。(画像、赤枠で囲った箇所)「このサーバーでは、HSTSが長い期間の設定されている。」と言う意味です。

SSL LabsのSSLテストレポート

HSTS の設定とプリロード リストへの登録申請作業は以上です。SSL化をした後は、訪問するユーザーにより安全なネット環境を提供するためHSTSのプリロードの設定・登録を行うことをお勧め致します。

HSTS プリロード リスト登録の確認

プリロードリストへの登録申請後、しばらくの期間は、hstspreload.orgのサイトでドメインを入力し、ステータスをチェックすると、「example.comは、プリロードリストへの申請登録待ち(申請中、承認待ち)の状態です。」の意味のメッセージが表示されます。(原文のメッセージ:”example.com is pending submission to the preload list.” )

HSTS プリロードリスト登録申請中の表示

登録申請後、数週間程度経過するとプリロードリストに登録されます。登録済みとなるとステータスが、「example.com は、(現在)プリロードされています。」と表示されます。(原文のメッセージ:”example.com is currently preloaded.)

HSTS プリロードリスト登録済みの表示

上の画面のように表示されていれば、サイト(ドメイン)はHSTS プリロード登録されていることが確認できます。

目次に戻る

コメントを残す(承認後表示されます)

*
*
* (公開されません)

Return Top