HTTP Strict Transport Security (HSTS) とは? 〜 Webサイトのセキュリティを強化する仕組み 〜


HSTS は、以下の 2 つの主要な機能を提供します。

  • 中間者攻撃の防止
    中間者が HTTP 接続に介入し、通信内容を盗聴したり改ざんしたりすることを防ぎます。
  • HTTPS 接続の強制
    ブラウザがウェブサイトにアクセスする際、常に HTTPS 接続を使用するように指示します。たとえユーザーが HTTP アドレスを入力しても、ブラウザは自動的に HTTPS アドレスにリダイレクトします。

HSTS は、以下のような場合に特に有効です。

  • ログイン機能やパスワード認証機能を提供するウェブサイト
  • オンラインバンキングやオンラインショッピングなどの金融取引を行うウェブサイト
  • ユーザーの個人情報や機密情報を取り扱うウェブサイト

HSTS の設定方法

HSTS は、Webサーバーの設定を変更することで有効にすることができます。設定方法は、使用している Webサーバーによって異なりますが、一般的には以下の手順で行います。

  1. Webサーバーの設定ファイルを開きます。
  2. HSTS ヘッダーを追加します。 HSTS ヘッダーには、以下の情報を含める必要があります。
    • max-age ディレクティブ: HSTS ポリシーの有効期間を秒単位で指定します。
    • includeSubDomains ディレクティブ (オプション): サブドメインにも HSTS ポリシーを適用するかどうかを指定します。
    • preload ディレクティブ (オプション): ブラウザに HSTS ポリシーをプリロードするよう指示します。
  3. Webサーバーを再起動します。

HSTS を設定する際には、以下の点に注意する必要があります。

  • 既存のブックマーク
    HSTS を有効にした後、既存のブックマークが HTTP アドレスで保存されている場合、ブラウザが正しく読み込めない可能性があります。ブックマークを HTTPS アドレスに変更する必要があります。
  • サブドメイン
    HSTS ポリシーをサブドメインに適用する場合は、includeSubDomains ディレクティブを忘れずに設定する必要があります。
  • 有効期限
    HSTS ポリシーの有効期限は、十分な長さに設定する必要があります。一般的には、1 年以上を設定するのが推奨されます。


Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

このコードは、以下のことを意味します。

  • preload: このドメインは、HSTS Preload List に追加されます。
  • includeSubDomains: このポリシーは、サブドメインにも適用されます。
  • max-age=31536000: この HSTS ポリシーは、1 年間 (31536000 秒) 有効です。

以下のコードは、Nginx で HSTS を有効にする例です。

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

以下のコードは、Apache で HSTS を有効にする例です。

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
  • HSTS を設定する前に、必ずドキュメントを参照し、詳細な設定方法を確認してください。
  • 上記のコードはあくまで例であり、使用する Webサーバーや環境によって変更が必要になる場合があります。


CDN (Content Delivery Network) を利用する

多くの CDN プロバイダは、HSTS を含む様々なセキュリティ機能を提供しています。CDN を利用している場合は、CDN の設定画面から HSTS を有効にすることができます。

CMS (Content Management System) を利用する

WordPress や Drupal などの CMS には、HSTS を有効にするためのプラグインが用意されている場合があります。CMS を利用している場合は、プラグインを利用して HSTS を簡単に設定することができます。

レジストリ設定を利用する

一部のオペレーティングシステムでは、レジストリ設定を変更することで HSTS を有効にすることができます。ただし、レジストリ設定を誤るとシステムに問題が発生する可能性があるため、この方法は上級者向けとなります。

方法メリットデメリット
Webサーバー設定柔軟性が高い設定が複雑
CDN設定が簡単CDN サービスに依存する
CMS プラグイン設定が簡単利用できるプラグインが限られる
レジストリ設定詳細な設定が可能設定を誤るとシステムに問題が発生する可能性がある

HSTS を設定する方法はいくつかありますが、Webサーバー設定が最も一般的で柔軟性が高い方法です。CDN や CMS を利用している場合は、これらのプラットフォームの設定を利用するのも良いでしょう。レジストリ設定は、上級者向けのオプションとなります。

  • HSTS を設定する前に、必ずドキュメントを参照し、詳細な設定方法を確認してください。
  • 上記の情報は、2024年5月24日時点のものです。