LoginSignup
327
300

More than 5 years have passed since last update.

HSTS (HTTP Strict Transport Security) の導入

Last updated at Posted at 2015-07-01

HTTPで接続した際に、強制的にHTTPSへリダイレクトし、以降のそのドメインへの接続はすべてHTTPSとする機能がHSTS (HTTP Strict Transport Security) である。RFC6797で標準化されている。

これはHTTPヘッダに以下を含むことで実現される。

Strict-Transport-Security:max-age=有効期間秒数;includeSubDomains

max-ageではHTTPSで通信する期間を設定する。また、includeSubDomainsを指定することで、サブドメインにもHSTSが適用されるように設定できる。

HSTSのサポートは、2015年6月9日にマイクロソフトがIEへのサポートを追加したことで、すべてのメジャーブラウザにおいてサポートが完了し、HTTPサーバーとしてもApacheを始めとし設定が可能だ。

Apacheの設定

Apacheにおいては、以下のバーチャルホストの設定になる。
ここではexample.comのサブドメインすべてにHSTSが適用されるように設定されており、365日(31,536,000秒)が有効期間である。

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>`

その他のHTTPサーバーの設定

IPA(情報処理推進機構)のSSL/TLS暗号設定ガイドライン~安全なウェブサイトのために(暗号設定対策編)~ のAppendix B.4. HTTP Strict Transport Security(HSTS)の設定方法例を参照。

Preloaded HSTS

HSTSを用いても、最初の接続にHTTPを用いる限り、完全なセキュリティは実現されない。これを解決するために、ChromeではPreloaded HSTS、すなわち最初からブラウザにHSTSを組み込めば良い。これはブラウザ本体にHSTSで接続するドメインのリストを持つことにより実現できる。

Chromeに組み込まれたPreloaded HSTSはここで参照できる。

また、ChromeのPreloaded HSTSに組み入れるためには、こちらから申請する。

特定のドメインがPreloaded HSTSとして登録されているかどうかの確認はChromeのアドレスバーにchrome://net-internals/#hsts を入力し表示されるChrome Net-Internalsのページから確認することもできる。"Query domain"にドメイン名を入力し、QueryをすることでHSTS情報を得ることができる。以前に訪れたドメインの場合は、"Delete domain"でそのドメインを一度削除すると良い。

スクリーンショット 2015-07-01 17.42.47.png

参考情報

327
300
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
327
300