Help us understand the problem. What is going on with this article?

HSTS (HTTP Strict Transport Security) の導入

More than 3 years have passed since last update.

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

参考情報

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away