ページ更新日:2026/05/12
HSTS(HTTP Strict Transport Security)は、Webサーバーがブラウザに対して「このサイトには常にHTTPSで接続してください」と指示するセキュリティ機能です。
一度アクセスしたブラウザは、指定期間中は自動的にHTTPSでのみ接続するようになり、中間者攻撃(MITM)やSSLストリッピング攻撃を防止します。
HSTSは、サーバーがHTTPSレスポンスに以下のようなヘッダーを付与することで機能します:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
| パラメータ | 説明 |
max-age=31536000 |
ブラウザがHTTPS強制を記憶する期間(秒)。31536000秒=1年。 |
includeSubDomains |
サブドメインにも同じポリシーを適用する。 |
preload |
HSTSプリロードリストへの登録を許可。ブラウザ出荷時からHTTPSを強制。 |
HSTSは「一度 HTTPS でアクセスしたブラウザのみ」に効力が及びます。初回アクセスがHTTPの場合は対象外です(プリロードリストに登録すれば初回から有効)。
https://example.com に初めてアクセスStrict-Transport-Security ヘッダーを返すmax-age 秒間 HTTPS 必須」と記録http://example.com を入力してもブラウザ側で自動的に https:// に変換してリクエスト(サーバーへの HTTP リクエスト自体が発生しない)server {
listen 443 ssl;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
...
}
# mod_headers モジュールが必要 Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" />
</customHeaders>
</httpProtocol>
</system.webServer>
Chrome・Firefox・Safari・Edgeなどの主要ブラウザは HSTSプリロードリスト(hstspreload.org)を持っており、リストに登録されたドメインには初回アクセスからHTTPSが強制されます。
登録するには以下の要件を満たす必要があります:
max-age=31536000(1年以上)、includeSubDomains、preload が含まれること登録は hstspreload.org から申請できます。
HSTS は一度有効にすると簡単に解除できません。以下のステップで段階的に導入することを強く推奨します。
max-age=300(5分)で設定し、ブラウザ・モバイル・SEOツールで問題がないか確認する。max-age=2592000(30日)→ max-age=31536000(1年)と段階的に延ばす。curl -I https://www.example.com
レスポンスに Strict-Transport-Security: max-age=31536000; ... が含まれていれば正しく設定されています。
Chrome のアドレスバーに chrome://net-internals/#hsts と入力すると、HSTS キャッシュの確認・削除ができます。
開発・テスト環境でHSTSをクリアしたい場合は「Delete domain security policies」欄にドメインを入力して削除してください。
includeSubDomains を省いてください。max-age=300)でテストし、問題がなければ長期間に変更することを推奨します。Strict-Transport-Security: max-age=0 を返す(ブラウザに「このドメインの HSTS を忘れてください」と指示)、その後ヘッダーを削除します。ただしすべてのユーザーへの反映は即座ではなく、旧設定の max-age が切れるまで強制が続くブラウザもあります。
📌 関連ページ:
NginxのHSTSとTLS設定強化(SSL Labs A+ 達成設定例)
ApacheでHSTS(常時SSL)設定
TLSバージョンと暗号スイートの設定ガイド
NginxへのSSL証明書インストール手順
ApacheへのSSL証明書インストール手順
常時SSL(Always On SSL)について