HSTSを有効にする前に|max-age・サブドメイン・preloadの確認手順
HTTPSを強制するHSTSの仕組みと、短いmax-ageから段階導入する方法。includeSubDomainsやpreloadで戻しにくくなる範囲も図解します。
この記事でわかること
先に答え:HTTPSが安定してから、短いmax-ageで始める
HSTS(HTTP Strict Transport Security)は、ブラウザーに「このホストへは今後HTTPSだけで接続する」と記憶させるHTTPレスポンスヘッダーです。次回以降に http:// が指定されても、ブラウザーは接続前にHTTPSへ切り替えます。
Strict-Transport-Security: max-age=300MDNによると max-age は秒単位です。上の300は5分です。HSTSはHTTPS証明書を用意する機能ではありません。 証明書、HTTPSでの表示、画像・フォーム等の混在コンテンツを先に直し、その後にHSTSを段階導入します。
リダイレクトとHSTSは動く場所が違う
HTTPからHTTPSへの301等のリダイレクトは、HTTPリクエストがサーバーへ届いた後に応答します。HSTSを記憶済みのブラウザーは、そのHTTPリクエストを送る前にURLをHTTPSへ変更します。
| 状態 | 最初の動き | サーバー側で必要なこと |
|---|---|---|
| HSTS未記憶 | HTTPへ接続後、HTTPSへ転送 | 同じホストのHTTPSへ転送 |
| HSTS記憶済み | ブラウザー内でHTTPSへ変更 | HTTPSで正常応答 |
| 証明書エラー | 接続を停止 | 正しい証明書へ修正 |
MDNは、HSTS対象でTLS警告が出た場合、利用者が警告を無視して進む選択肢をブラウザーが提供しないと説明しています。証明書更新に失敗すると、通常より復旧が難しく見えるため、証明書更新の自動化と監視を先に確認します。
3つの指定を一度に付けない
基本の構文は max-age、必要に応じて includeSubDomains、さらに事前読み込みを希望するときだけ preload です。
max-age
ブラウザーがHTTPS限定を記憶する秒数です。ヘッダーを受け取るたびに期限は更新されます。ヘッダーを削除しただけでは、既に記憶したブラウザーの設定は元の期限まで残ります。解除を通知する場合はHTTPS応答で max-age=0 を返します。
includeSubDomains
対象ドメイン配下のサブドメインにもHSTSを適用します。example.com で付けると、公開サイトだけでなく、mail.example.com、old.example.com、社内用途の名前などにも影響します。現在存在するものだけでなく、今後作るサブドメインもHTTPSが必要です。
preload
ブラウザー組み込みのHSTSリストへ登録する意思を示す値です。RFC 6797のHSTS本体とは別の仕組みです。hstspreload.orgは2026年10月12日現在、HSTS自体は推奨する一方、preloadは推奨していません。登録解除は遅くなる場合があるため、初期設定で付けません。
段階導入は「観測期間」をmax-ageより短くしない
hstspreload.orgは、全サブドメインのHTTPSを確認したうえで、5分、1週間、1か月とmax-ageを段階的に伸ばし、各段階で問題を監視して、その段階のmax-age全体を待つ方法を案内しています。
| 段階 | ヘッダー例 | 確認すること |
|---|---|---|
| 事前確認 | HSTSなし | 証明書、HTTP→HTTPS転送、全ページ・全サブドメイン |
| 5分 | max-age=300 | 管理画面、API、フォーム、古い端末 |
| 1週間 | max-age=604800 | 証明書更新、監視、外部連携 |
| 1か月 | max-age=2592000 | サブドメイン一覧、長期運用 |
| 長期 | 運用方針に合わせる | 解除・移行時の手順を保存 |
この段階値はpreloadサービスが示す導入案です。すべての組織に同じ期間が最適とは限りません。利用者数、証明書運用、サブドメイン管理に合わせ、短い値から問題がないことを実際に確認します。
公開前の確認表
HSTSヘッダーはHTTPSレスポンスでだけ有効です。HTTPレスポンスへ付けてもブラウザーは無視します。
http://example.com/が同じホストのhttps://example.com/へ転送される。- HTTPS証明書が有効で、更新方法と担当者が決まっている。
- 主要ページ、画像、CSS、JavaScript、フォームがHTTPSで動く。
- 使用中・休止中・社内用を含むサブドメイン一覧を確認した。
- CDN、ロードバランサー、アプリのどこでヘッダーを付けるか決めた。
- 同じヘッダーが重複して矛盾していない。
- 解除時にHTTPSで
max-age=0を返せる。
ブラウザーの開発者ツールでは、HTTPSで対象ページを開き、Networkからページ本体のResponse Headersを確認します。画像やAPIだけにヘッダーが付いていても、利用者が最初に開く文書へ付いていない場合があります。
失敗したときの分岐
| 現象 | 最初に確認すること |
|---|---|
| 一部利用者だけ証明書エラー | 以前のHSTS記憶、証明書チェーン、接続ホスト |
| サブドメインが急に開かない | 親のincludeSubDomains、そのホストの証明書 |
| ヘッダーを消しても戻らない | 保存済みmax-ageの期限、HTTPSでのmax-age=0 |
| preload後にHTTP専用サブドメインが必要 | 設計見直し、解除申請と反映時間 |
| HTTPから転送されない | HSTSとは別にサーバーの転送設定 |
制作担当者への依頼文
対象ホスト:example.com
現在のHTTP→HTTPS転送:確認済み/未確認
証明書の更新方法と期限監視:____
全サブドメイン一覧:____
今回のmax-age:300秒から開始
includeSubDomains:今回は付けない/全サブドメイン確認後に検討
preload:今回は付けない
確認日時:2026-10-12 16:30 UTC
問題時:HTTPSでmax-age=0を返し、証明書・転送・各ホストを確認長いmax-ageやpreloadは「セキュリティを強くするボタン」ではなく、将来の構成変更も拘束する運用判断です。現在と将来のすべての対象ホストを確認できない段階では、範囲を広げません。
SITE PORTを検討するときの確認ポイント
サイト制作を依頼する場合は、画面の見た目だけでなく、この記事で扱った設定を誰が担当するか、公開後に何を自分で変更できるかを確認します。SITE PORTの完成例と編集デモでは、完成イメージと日常的な編集の流れを確認できます。サーバー設定・検索向けコード・WordPress保守が通常の本文編集と同じ範囲で扱えるとは限らないため、必要な作業を具体的に伝えて対応範囲を確認してください。
関連記事
[HTTPS警告の見分け方](/articles/https-certificate-warning-check)・[wwwあり/なしと正規URL](/articles/www-canonical-url-choice)
出典・確認情報
確認日:2026-10-12 / 公式情報の要点と編集部の提案を整理しています。価格・機能・条件は変更される場合があります。
MDN:Strict-Transport-SecurityヘッダーRFC Editor:RFC 6797 HTTP Strict Transport SecurityHSTS Preload List SubmissionMDN:TLS configuration