HSTSとは、WebサイトをHTTPSでのみ接続するようブラウザに指示する仕組みです。正式名称は「HTTP Strict Transport Security」で、HTTPS対応済みのサイトをより安全に運用するために使われます。
ただし、HSTSはSSL証明書を設定する機能でも、HTTPからHTTPSへ301リダイレクトする機能でもありません。設定を間違えると、サブドメインまで開けなくなることがあるため、仕組みを理解してから有効化する必要があります。
30秒でわかる結論
- HSTSは「このサイトは今後HTTPSだけで開く」とブラウザへ伝える仕組み
- HTTPへアクセスしても、HSTSを記憶したブラウザはHTTPSへ切り替えて接続する
- HSTSはHTTPS化や301リダイレクトの代わりではない
- 設定にはStrict-Transport-Securityレスポンスヘッダーを使う
- max-ageはブラウザがHSTS設定を記憶する秒数
- includeSubDomainsを付けるとサブドメインにも適用される
- preloadは長期的な影響があるため、初心者が安易に追加しない
- すべての対象ドメイン・サブドメインでHTTPSが正常に使えることを確認してから設定する
HSTSとは?
HSTSは、Webサーバーがブラウザへ「このホストには今後HTTPSで接続してください」と伝えるセキュリティ機能です。
WebサーバーはHTTPSのレスポンスに、次のようなHTTPヘッダーを付けます。
HSTSヘッダーの基本例
Strict-Transport-Security: max-age=31536000
この例では、ブラウザがそのホストをHSTS対象として約1年間記憶します。
その後、利用者が「http://example.com」のようなHTTP URLを入力しても、HSTSを記憶しているブラウザはHTTPSへ切り替えて接続します。
初心者向けに一言でいうと
HSTSは、「このサイトはHTTPではなくHTTPSで開く」とブラウザに覚えさせる仕組みです。
HSTSの仕組み
HSTSは、ブラウザとWebサーバーの間で次のように働きます。
有効なTLS接続でWebサーバーへ接続します。
Strict-Transport-SecurityヘッダーをHTTPSレスポンスに含めます。
max-ageで指定された期間、ポリシーを保存します。
ブラウザ側でHTTPSへ切り替えます。
HTTPで接続してから転送される前にHTTPSを使います。
RFC 6797では、HSTSヘッダーは安全な接続で受信した場合に処理されます。HTTPで送られたStrict-Transport-Securityヘッダーはブラウザに無視されます。
HSTSとHTTP→HTTPSリダイレクトの違い
HSTSと301リダイレクトは似て見えますが、働く場所が異なります。
| 項目 | HSTS | HTTP→HTTPSリダイレクト |
|---|---|---|
| 動作する場所 | 主にブラウザ側 | Webサーバー側 |
| HTTP接続 | 記憶後はHTTPSへ切り替える | 一度HTTPでサーバーへ接続する |
| 主な目的 | HTTPS利用を強制する | HTTP URLをHTTPS URLへ転送する |
| 初回アクセス | 通常は事前情報なし | HTTPからHTTPSへ転送可能 |
| 単独でHTTPS化できるか | できない | できない |
HTTPS化したサイトでは、通常はHTTPからHTTPSへのリダイレクトも設定します。そのうえでHSTSを追加すると、以後のHTTP接続をブラウザ側でHTTPSへ切り替えられます。
SSL/TLS設定 + HTTP→HTTPSリダイレクト + HSTS = HTTPS運用をより強固にする構成
HSTSのメリット
HTTPへのダウングレードを防ぎやすくなる
利用者がHTTP URLを入力した場合でも、HSTSを記憶しているブラウザはHTTPSへ切り替えます。
そのため、HTTPからHTTPSへ転送する前の通信を狙う「SSLストリッピング」のような攻撃への対策になります。
HTTPリンクを踏んでもHTTPSへ切り替えられる
古いブックマークや外部サイトに「http://」のリンクが残っていても、HSTSを記憶したブラウザではHTTPSが使われます。
証明書エラーを無視して進みにくくなる
HSTS対象ホストで証明書エラーが発生した場合、ブラウザは利用者に危険な接続をそのまま続行させない動作をします。
HSTSの目的は速度ではなく安全性
HSTSを設定したからWebサイトが大幅に高速化するわけではありません。主な目的はHTTPS運用の安全性を高めることです。
max-ageとは?
max-ageは、ブラウザがHSTSポリシーを何秒間記憶するかを指定する値です。
| max-age | おおよその期間 |
|---|---|
| 300 | 5分 |
| 86400 | 1日 |
| 604800 | 1週間 |
| 2592000 | 30日 |
| 31536000 | 1年 |
| 63072000 | 2年 |
たとえば次の設定では、ブラウザが約1年間HSTSを記憶します。
1年間の設定例
Strict-Transport-Security: max-age=31536000
重要なのは、max-ageを長くすると、設定ミスの影響も長く残りやすいことです。
最初から長期間にしない
HSTS Preload公式では、5分・1週間・1か月のように段階的にmax-ageを長くし、その間に問題がないか確認する方法が案内されています。
includeSubDomainsとは?
includeSubDomainsを指定すると、そのドメイン配下のサブドメインにもHSTSポリシーを適用します。
サブドメインを含める例
Strict-Transport-Security: max-age=31536000; includeSubDomains
たとえばexample.comでこの設定を有効にすると、次のようなサブドメインも影響を受けます。
- www.example.com
- shop.example.com
- mail.example.com
- test.example.com
HTTPしか使えないサブドメインが1つでもあるなら注意
includeSubDomainsを付けると、古いシステム・社内用サブドメイン・検証環境などもHTTPS接続が必要になります。すべて確認してから有効化してください。
preloadとは?
通常のHSTSには弱点があります。初めて訪問するブラウザは、まだそのサイトがHSTS対象だと知りません。
この初回接続の問題を補うために使われる仕組みがHSTS preloadです。
preloadリストへ登録されたドメインは、対応ブラウザにあらかじめHSTS対象として組み込まれます。そのため、初回アクセスからHTTPSへ接続できます。
preloadを含む代表例
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
現在のHSTS Preloadの登録要件では、少なくとも次の条件が求められます。
- 有効な証明書を使用している
- HTTPからHTTPSへリダイレクトする
- すべてのサブドメインをHTTPSで提供する
- max-ageが31536000秒以上
- includeSubDomainsを指定する
- preloadを指定する
preloadは通常のHSTSより慎重に
HSTS Preload公式は、preloadをデフォルトで有効にしないよう注意を促しています。リストからの削除には時間がかかり、サブドメインをHTTPへ戻したくてもすぐには戻せません。
HSTSを設定する前に確認すること
設定前チェック
- Webサイト全体がHTTPSで正常表示できる
- SSL/TLS証明書が正常である
- HTTPからHTTPSへリダイレクトできている
- HTTPSでフォーム・ログイン・決済などが正常動作する
- Mixed Contentが残っていない
- includeSubDomainsを使う場合、すべてのサブドメインがHTTPS対応している
- CDNやリバースプロキシを使っている場合、どこでHSTSヘッダーを付与するか把握している
WordPressの場合も、WordPress管理画面だけでHSTSが完結するとは限りません。HSTSはWebサーバー、レンタルサーバー、CDNなどのレスポンスヘッダー設定として追加することが多いためです。
HSTSの設定方法
HSTSは、HTTPSレスポンスにStrict-Transport-Securityヘッダーを付与して設定します。
どこで設定するかは利用環境によって異なります。
| 環境 | 主な設定場所 |
|---|---|
| 共用レンタルサーバー | サーバー管理画面・対応機能 |
| Apache | サーバー設定・.htaccess等 |
| Nginx | サーバー設定 |
| CDN利用 | CDN側のレスポンスヘッダー設定 |
| マネージドサービス | サービス側で自動設定される場合あり |
具体的な設定方法はサーバー構成によって異なります。共用レンタルサーバー利用者は、サーバー会社がHSTS機能を提供しているかを先に確認してください。
HSTSを確認する方法
設定後は、HTTPSレスポンスにStrict-Transport-Securityヘッダーが含まれているか確認します。
ブラウザの開発者ツールで確認
対象ページをHTTPSで開き、ネットワークタブのレスポンスヘッダーを確認します。
確認するヘッダー
Strict-Transport-Security: max-age=31536000
HTTPヘッダー確認ツールを使う
外部のHTTPヘッダー確認サービスでも確認できます。ただし、CDN・地域・キャッシュなどにより表示が異なる場合があるため、必要に応じて複数環境で確認します。
サブドメインも確認する
includeSubDomainsを使う場合は、メインドメインだけでなく実際に使用しているサブドメインもHTTPSで正常表示できるか確認してください。
HSTS設定時の注意点
HTTPSが壊れるとサイトを開けなくなる
HSTSを記憶したブラウザはHTTPSを優先します。その状態で証明書が失効したり、HTTPS設定を削除したりすると、HTTPへ戻して一時回避することが難しくなります。
証明書エラーを無視して進めない
これはHSTSの安全性でもありますが、運営側から見ると、証明書更新ミスがそのままアクセス不能につながります。
includeSubDomainsの影響範囲が広い
親ドメインで設定すると、将来作るサブドメインも影響を受けます。古い管理画面や社内システムがHTTPだけで動作している場合は特に注意します。
max-ageはすぐ元に戻せない
設定を解除するときは、HTTPSレスポンスで次のように送ります。
HSTS解除用の値
Strict-Transport-Security: max-age=0
ただし、利用者のブラウザがそのHTTPSレスポンスを受信する必要があります。証明書が壊れてサイトへHTTPS接続できない状態では、単純に解除できません。
preloadはさらに解除しにくい
preloadリストから削除申請しても、変更が各ブラウザへ行き渡るまで時間がかかります。そのため「試しにpreload」は避けるべきです。
HSTSはWordPressサイトに必要?
WordPressだから必須というわけではありません。判断基準は、WordPress本体ではなくHTTPS運用を長期的に固定できるかです。
個人ブログ
必要度:中
HTTPS運用が安定しているなら有効ですが、サーバー側で自動対応している場合もあります。
会社サイト
必要度:高め
問い合わせ・ログインなどを扱い、HTTPSを恒久運用するなら検討価値があります。
検証環境が多いサイト
注意度:高い
includeSubDomainsを付ける前に、検証用サブドメインもHTTPS対応しているか確認します。
初心者の共用サーバー
まず公式機能を確認
自分でヘッダーを追加する前に、レンタルサーバー側のHTTPS・HSTS対応を確認します。
HSTSを使わなくてもHTTPSは使える?
はい。HSTSがなくても、SSL/TLS証明書を設定してHTTPSでWebサイトを公開できます。
HSTSはHTTPSそのものではなく、HTTPS運用をさらに強くする追加のセキュリティ機能です。
HTTPS=通信を暗号化する仕組み
HSTS=HTTPSだけを使うようブラウザへ指示する仕組み
初心者はまずHTTPS化を正しく完了し、その後にHSTSを検討してください。
教科書判定
HSTSはHTTPS運用が完全に安定してから有効化する
初心者はまず「HSTSはHTTPSをブラウザに強制する仕組み」と理解すれば十分です。
個人ブログや会社サイトでも、HTTPS・証明書更新・HTTP→HTTPSリダイレクトが安定しているならHSTSは有効な追加対策になります。
一方、includeSubDomainsやpreloadは影響範囲が大きいため、すべてのサブドメインを長期的にHTTPS運用できることを確認してから使ってください。特にpreloadは安易に有効化しない方が安全です。
FAQ
Q. HSTSを設定すればSSL証明書は不要になりますか?
A. いいえ。HSTSは有効なHTTPS接続を前提にする仕組みです。SSL/TLS証明書は必要です。
Q. HSTSと301リダイレクトはどちらを使えばよいですか?
A. 役割が違うため、HTTPS運用では両方を使う構成があります。301はHTTPからHTTPSへ転送し、HSTSはブラウザへHTTPSのみを使うよう指示します。
Q. max-ageは長いほど安全ですか?
A. 長期間のHSTSは保護期間を長くできますが、設定ミスの影響も長く残ります。最初は短期間でテストし、問題がないことを確認して段階的に伸ばす方が安全です。
Q. includeSubDomainsは付けた方がよいですか?
A. すべてのサブドメインをHTTPSで運用できる場合に検討します。HTTPしか使えないサブドメインがあるなら付けないでください。
Q. preloadは初心者でも設定した方がよいですか?
A. 基本的には急いで設定する必要はありません。全サブドメインを長期的にHTTPS運用でき、解除に時間がかかることまで理解したうえで判断します。
まとめ
HSTSはHTTPSをより確実に使わせるセキュリティ機能
- HSTSはStrict-Transport-Securityヘッダーで設定する
- ブラウザにHTTPSのみを使うよう記憶させる
- max-ageは記憶期間を秒数で指定する
- includeSubDomainsはサブドメインにも適用する
- HSTSはHTTPS化や301リダイレクトの代替ではない
- 証明書やHTTPS設定に問題があるとアクセス不能になる可能性がある
- 最初は短いmax-ageから段階的に確認する
- preloadは影響が長期化するため慎重に使う
初心者は、まずHTTPS運用を完全に安定させてください。そのうえでHSTSを追加し、includeSubDomainsやpreloadは必要性と影響範囲を理解してから設定するのが安全です。
次に読む
「HTTPからHTTPSへリダイレクトする方法」「TLSとは?SSLとの違いを初心者向けに解説」「Mixed Contentとは?HTTPS化後の警告原因と直し方」「SSL証明書の有効期限と更新方法を解説」もあわせて確認してください。

