ブロギングライフ

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

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

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

HSTSとは?

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

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

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

HTTPS サイトでは HTTP Strict Transport Security(HSTS)をサポートすることをおすすめします。HSTS は、ユーザーがブラウザのアドレスバーに http を入力した場合でも自動的に HTTPS ページをリクエストするようブラウザに指示し、Google には検索結果に安全な URL を表示するよう指示します。こうした仕組みにより、保護されていないコンテンツをユーザーに提供するリスクを最小限に抑えます。

HSTSが推奨される理由

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

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

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

目次に戻る

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を設定した後は、訪問するユーザーにより安全なネット環境を提供するためHSTSのプリロードの設定・登録を行うことをお勧め致します。

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 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 プリロード リスト登録の確認方法

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

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

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

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

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

目次に戻る

Firefoxが実装している HSTS プリロードリストの登録確認方法

Mozillaのサイトで、FirefoxでのHSTS プリロードされているドメインをリストで公開しています。Firefox プリロードリストのページを訪問して、”Search comm-central”と欄内記載されている検索ボックスにドメイン名を入力して、検索を行うとFirefoxのプリロードリストにサイトが登録されているか確認することができます。

Firefox HSTS プリロードリスト検索結果

備考:
基本的には、上で紹介した hstspreload.org のページでプリロードされていれば、対応ブラウザ(含むFiirefox)でのプリロードも実装されています。

目次に戻る

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に対して長い期間の設定がされている。(HSTSのヘッダーでmax-ageが十分に長い期間で設定されている)」と言う意味です。

SSL LabsのSSLテストレポート

目次に戻る

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

*
*
* (will not be published.)

Return Top