Join MDN and developers like you at Mozilla's View Source conference, November 2-4 in Portland, Oregon. Learn more at https://viewsourceconf.org/.

HTTP Strict Transport Security

HTTP Strict Transport Security (よく HSTS と略されます) は、Web サイトがブラウザに対して、HTTP の代わりに HTTPS を用いて通信を行うように伝達することができるセキュリティ機能です。

利点

例えばユーザが http://www.foo.com/ または単に foo.com と入力すると、Web サイトが HTTP で受け付けたコネクションを HTTPS へリダイレクトする場合、リダイレクトされるまでユーザは暗号化されない接続を行うことになるでしょう。

この方法には、リダイレクトによりユーザを元のサイトの安全なバージョンではなく悪意のあるサイトへ誘導するという、中間者攻撃のおそれがあります。

HTTP Strict Transport Security 機能により、Web サイトはブラウザに対して、そのサイトでは HTTP を使用せず、代わりに HTTPS へ置き換えてアクセスすることを試みるように伝達することが可能になります。

事例

あなたは、空港で無料の Wi-Fi アクセスポイントにログインして Web の閲覧を開始し、オンラインバンキングサービスで残高の確認や取引を行います。しかし不運にも、あなたが使用したアクセスポイントはハッカーのノートパソコンであり、そのハッカーはあなたの HTTP リクエストを傍受して、本物の銀行のサイトではなく偽のサイトへリダイレクトしています。これにより、あなたの個人情報はハッカーにさらされてしまいます。

Strict Transport Security はこのような問題を解決します。銀行の Web サイトが Strict Transport Security を利用していると、あなたが一度銀行の Web サイトへ HTTPS でアクセスすれば、ブラウザは自動的に HTTPS のみを用いるよう理解して、ハッカーによるこの種の中間者攻撃の実行を防ぎます。

Strict Transport Security の有効化

この機能を Web サイトで有効化する方法は、HTTPS でアクセスを受けた際に Strict-Transport-Security HTTP レスポンスヘッダを応答することです:

Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
expireTime
ブラウザがそのサイトに対して HTTPS のみで接続することを記憶する時間です。この時間は、秒単位です。
includeSubDomains Optional
この省略可能なパラメータが指定されている場合は、Strict Transport Security のルールをすべてのサブドメインにも同様に適用します。
preload Optional
詳しくは Preloading Strict Transport Security を参照してください。このパラメータは仕様 (RFC 6797) で定義されていません。
注: HTTP でアクセスされた場合、ブラウザは Strict-Transport-Security ヘッダを 無視します。これは攻撃者が HTTP の接続を傍受して、ヘッダを挿入あるいは削除することが可能であるためです。Web サイトが HTTPS でアクセスされ、かつ証明書のエラーがない場合は、ブラウザはサイトの HTTPS が有用であると判断し、Strict-Transport-Security ヘッダの内容に従います。

ブラウザでの取り扱い

Web サイトが始めに HTTPS でアクセスされ、そこで Strict-Transport-Security ヘッダを応答すると、ブラウザはその情報を記録します。すると Strict Transport Security 機能により、そのサイトには HTTP でアクセスせず、自動的に HTTPS を使用することを試みるようになります。

Strict-Transport-Security ヘッダで指定された有効期限が経過すると、自動的に HTTPS を使用するのではなく、通常通り HTTP でサイトへのアクセスを試みるようになります。

なお、Strict-Transport-Security ヘッダがブラウザへ送られるたびに、その Web サイトに対する有効期限は更新されます。よってサイトはこの情報を再設定することで、有効期限が切れることを防ぐことができます。

Strict Transport Security のプリロード

Google では ドメインを HSTS Pre-loaded List に登録するサービス を行っています。記載された手順に従ってドメインを登録すれば、今後ブラウザとそのドメインとの間に安全でない通信は起こらなくなります。これに登録するには Strict-Transport-Security ヘッダに preload パラメータを含める必要があります。

 

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 4.0.211.0 4.0 (2.0) 11 (2015年6月) 12 7 on Maverics
機能 Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 18 4.0 (2.0) 未サポート ? 未サポート

仕様書

関連情報

ドキュメントのタグと貢献者

Contributors to this page: yassan, clariroid, zatsubun, yyss
最終更新者: yassan,