メニューSSL証明書 - メニュー
【SSL証明書】FAQ/情報

HSTS(HTTP Strict Transport Security)とは?設定方法と注意点

ページ更新日:2026/05/12

HSTS(HTTP Strict Transport Security)は、Webサーバーがブラウザに対して「このサイトには常にHTTPSで接続してください」と指示するセキュリティ機能です。
一度アクセスしたブラウザは、指定期間中は自動的にHTTPSでのみ接続するようになり、中間者攻撃(MITM)やSSLストリッピング攻撃を防止します。

HSTSの仕組み

HSTSは、サーバーがHTTPSレスポンスに以下のようなヘッダーを付与することで機能します:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
パラメータ 説明
max-age=31536000 ブラウザがHTTPS強制を記憶する期間(秒)。31536000秒=1年。
includeSubDomains サブドメインにも同じポリシーを適用する。
preload HSTSプリロードリストへの登録を許可。ブラウザ出荷時からHTTPSを強制。

HSTSが有効になるまでの流れ

HSTSは「一度 HTTPS でアクセスしたブラウザのみ」に効力が及びます。初回アクセスがHTTPの場合は対象外です(プリロードリストに登録すれば初回から有効)。

  1. ユーザーが https://example.com に初めてアクセス
  2. サーバーが Strict-Transport-Security ヘッダーを返す
  3. ブラウザが「このドメインは max-age 秒間 HTTPS 必須」と記録
  4. 以降は http://example.com を入力してもブラウザ側で自動的に https:// に変換してリクエスト(サーバーへの HTTP リクエスト自体が発生しない)

HSTSのメリット

各Webサーバーでの設定方法

Nginx

server {
    listen 443 ssl;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    ...
}

Apache

# mod_headers モジュールが必要
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

IIS(web.config)

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

HSTSプリロードリストとは

Chrome・Firefox・Safari・Edgeなどの主要ブラウザは HSTSプリロードリスト(hstspreload.org)を持っており、リストに登録されたドメインには初回アクセスからHTTPSが強制されます。
登録するには以下の要件を満たす必要があります:

登録は hstspreload.org から申請できます。

段階的な導入手順(推奨)

HSTS は一度有効にすると簡単に解除できません。以下のステップで段階的に導入することを強く推奨します。

  1. HTTPS 環境を整備する:SSL証明書が正しくインストールされ、HTTP→HTTPS の301リダイレクトが動作していることを確認。
  2. 短い max-age でテストmax-age=300(5分)で設定し、ブラウザ・モバイル・SEOツールで問題がないか確認する。
  3. max-age を延長:問題なければ max-age=2592000(30日)→ max-age=31536000(1年)と段階的に延ばす。
  4. includeSubDomains を追加(任意):すべてのサブドメインが HTTPS に対応済みであることを確認してから追加。
  5. preload を追加してプリロード申請(任意):hstspreload.org で申請。一度登録すると削除に数ヶ月かかるため慎重に判断。

HSTSの確認方法

curl でヘッダーを確認

curl -I https://www.example.com

レスポンスに Strict-Transport-Security: max-age=31536000; ... が含まれていれば正しく設定されています。

Chrome でブラウザキャッシュを確認・削除

Chrome のアドレスバーに chrome://net-internals/#hsts と入力すると、HSTS キャッシュの確認・削除ができます。
開発・テスト環境でHSTSをクリアしたい場合は「Delete domain security policies」欄にドメインを入力して削除してください。

HSTS・証明書チェーン・リダイレクト設定を自動診断
【ツール】SSL証明書インストールチェッカー(有効期限・HSTS・OCSP・HTTP/2・セキュリティスコア A+〜F を一括確認)

HSTSの注意点

📌 関連ページ:
NginxのHSTSとTLS設定強化(SSL Labs A+ 達成設定例)
ApacheでHSTS(常時SSL)設定
TLSバージョンと暗号スイートの設定ガイド
NginxへのSSL証明書インストール手順
ApacheへのSSL証明書インストール手順
常時SSL(Always On SSL)について

↑ 上へ 注文 検索