HSTSヘッダー生成

HSTS(Strict-Transport-Security)ヘッダー生成&プリロード検証ツール

IETF RFC 6797

RFC 6797準拠のHTTP Strict-Transport-Security (HSTS) ヘッダー生成、max-age計算、includeSubDomains指定、およびChrome HSTSプリロード適格性検証ガイド。

Presets:
有効期間:2 years (730 days / 63,072,000s)
includeSubDomainsRFC 6797 §6.1.2

現在および将来のすべてのサブドメインに HSTS を強制します (例: *.example.com)。Chrome プリロードには必須です。

preloadChromium 仕様

Chrome、Edge、Firefox、Safari のソースコードへの組み込みに同意します。max-age >= 31536000 および includeSubDomains が必須です。

サーバー "always" フラグ (Nginx / Apache)推奨

404、500、502 などのエラーページを含むすべての HTTP レスポンスでヘッダーが送信されるようにします。

# ====================================================================
# Nginx Configuration: Strict-Transport-Security (HSTS)
# Server Block: https://example.com
# ====================================================================
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com *.example.com;

    # SSL Certificate Paths
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # HSTS Security Header
    # Note: 'always' ensures the header is sent even on 4xx/5xx error responses
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    # Recommended Complementary Security Headers
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "DENY" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

# Redirect HTTP (Port 80) to HTTPS (Port 443)
# RFC 6797 §7.2: DO NOT send Strict-Transport-Security over insecure HTTP!
server {
    listen 80;
    listen [::]:80;
    server_name example.com *.example.com;
    return 301 https://$host$request_uri;
}
有効なディレクティブ
3 / 3 有効
プリロード適合度
100% (Ready)
有効期間
2 years

100% クライアントサイド処理

サーバーへの送信は一切ありません。ドメイン名やセキュリティ設定はブラウザ内で安全に解析・生成されます。

RFC 6797 & Chrome プリロード準拠

IETF RFC 6797 仕様および Chromium HSTS Preload 提出基準に完全準拠し、最新ブラウザの安全性を保証します。

主要 Web サーバー対応コード出力

Nginx、Apache、Caddy、Cloudflare、Next.js、HAProxy など本番環境に即座にデプロイ可能なスニペットを提供します。

技術リファレンス&アーキテクチャガイド

HSTS (Strict-Transport-Security) ヘッダー生成&プリロード検証 — リファレンスガイド

RFC 6797準拠のHTTP Strict-Transport-Security (HSTS) ヘッダー生成、max-age計算、includeSubDomains指定、およびChrome HSTSプリロード適格性検証ガイド。

主要パラメータ&設定項目

max-age整数(秒数)

ブラウザがHTTPS接続のみを強制し、安全でない接続を拒否する有効期間を秒単位で指定します。

初期値: 63072000 (2年間)
includeSubDomains真偽値フラグ

HSTSポリシーを現在のホストの全サブドメイン(既存および将来作成されるサブドメインを含む)に適用し、ダウングレード攻撃を防ぎます。

初期値: true
preload真偽値フラグ

Chromium、Firefox、Safariなどの主要ブラウザのグローバルHSTSプリロードリストへのドメイン登録に同意します。

初期値: true
Webサーバー / プラットフォーム列挙型 (Nginx | Apache | Cloudflare | Caddy | Vercel | IIS)

Strict-Transport-Securityレスポンスヘッダーを展開するターゲットWebサーバーまたはリバースプロキシの構文形式。

初期値: Nginx

プロの活用テクニック&推奨設定

サブドメインの接続障害を防ぐ段階的ロールアウト戦略

いきなり2年のmax-ageとincludeSubDomainsを有効化せず、まずは5分(max-age=300)から開始し、1週間(max-age=604800)へ徐々に延長して、社内ツールやメールサーバー等すべてのサブドメインでTLS証明書が正常に動作するか確認してください。

HSTSヘッダーはHTTPSレスポンスでのみ送信する

RFC 6797第7.2項の規定により、ブラウザは平文HTTP経由で受信したStrict-Transport-Securityヘッダーを無視しなければなりません。HTTPポート80のリダイレクト応答にHSTSを含めると、セキュリティスキャナーで警告の原因となります。

プリロード登録は即座に取り消せない不可逆的措置

hstspreload.orgに登録されると、ドメイン情報が各ブラウザのソースコードにハードコードされます。登録解除には各ブラウザベンダーのリリースサイクルが必要で、全世界のユーザーに行き渡るまでに通常2〜6ヶ月を要します。

よくあるトラブルと解決策

サブドメインがSSL証明書エラーまたは接続拒否によりアクセス不能になる

includeSubDomainsを有効にすると、すべてのサブドメインでHTTPS接続が強制されます。証明書のないサブドメインがある場合は、直ちにワイルドカード証明書または個別TLS証明書を発行するか、親ドメインで一時的にmax-age=0を返してクライアントのHSTSキャッシュをリセットしてください。

hstspreload.orgでの検証時にドメインが拒否される

ルートドメインが有効なTLS証明書を提供していること、ポート80の平文HTTPからHTTPSへのリダイレクトが存在すること、HTTPS応答でmax-ageが31536000秒以上であり、includeSubDomainsとpreloadの両ディレクティブが含まれていることを確認してください。

よくある質問 (FAQ)

HTTP Strict Transport Security (HSTS) とは何ですか?どのような攻撃を防ぎますか?▼

HSTSはRFC 6797で標準化されたセキュリティヘッダーです。ブラウザに対して、初回の平文HTTPリクエストを送信する前にローカルで自動的にHTTPSに書き換えるよう指示します。これにより、公衆Wi-Fi等で発生する中間者(MITM)攻撃やSSLストリッピング攻撃を完全に防ぎ、証明書警告のバイパスを防止します。

Chrome HSTSプリロードリストに登録するための必須要件は何ですか?▼

hstspreload.orgの基準を満たすには、1) 有効なTLS証明書を提供すること、2) ポート80から同一ホストのHTTPSへリダイレクトすること、3) すべてのサブドメインでHTTPSが利用可能であること、4) max-ageが最低1年(31536000秒)以上であること、5) 'includeSubDomains'および'preload'ディレクティブが両方明記されていることが必要です。

設定ミスが発生した場合、HSTSポリシーを即座に取り消すことは可能ですか?▼

プリロード未登録のドメインであれば、HTTPS経由で'Strict-Transport-Security: max-age=0'ヘッダーを返送することで、訪問者のブラウザが保持するHSTSキャッシュを即時に失効・消去できます。ただし、ブラウザのプリロードリストに組み込まれた後は、hstspreload.orgで解除申請を行い、各ブラウザのアップデート版が世界中に配信されるのを待つ必要があります。

HSTSが有効な場合、なぜブラウザでSSL証明書エラーの無視(続行)ができないのですか?▼

通常のHTTPSでは証明書の期限切れ等に対して『安全でないサイトへ進む』という警告回避リンクが表示されますが、HSTS有効時はRFC 6797の規定によりブラウザは接続を即座に切断し、警告回避操作を一切許可しません。これにより偽装証明書を用いた中間者攻撃からユーザーを強制保護します。

関連するおすすめ開発ツール

すべてのツール →
OpenSSHサーバー(sshd_config)セキュリティ強化設定ジェネレーターセキュリティ

rootログイン禁止、公開鍵認証の強制、最新のAEAD暗号スイート、厳格なアイドルタイムアウトを備えた本番Linuxサーバー向けsshd_configを生成します。

ツールを開く→
Linuxセキュリティ&インフラ自動化セキュリティ

Ubuntu UFW のファイアウォール規則、デフォルト遮断ポリシー、レート制限、ポート転送、自動実行可能な Bash スクリプトをブラウザ上で安全に生成します。

ツールを開く→
Linux iptables ファイアウォールルール構築・シェルスクリプト生成セキュリティ

INPUT/FORWARD/OUTPUTチェーン、ステートフルパケット検査、SYN Flood防御、NATポートフォワーディング、自動シェルスクリプト出力。

ツールを開く→
DNS SPF (Sender Policy Framework) レコードビルダー&解説 技術者ガイドセキュリティ

RFC 7208準拠のSPF TXTレコードを生成・検証。IPv4/IPv6 CIDRブロック、MX、A、includeメカニズム、SoftFail/HardFail強制ポリシーの設計とDNS 10回ルックアップ制限対策。

ツールを開く→
DNS DMARCポリシーレコードビルダー&構文バリデータセキュリティ

ポリシー適用(none/quarantine/reject)、rua/ruf集約レポート、アライメントタグを備えたRFC 7489準拠のDMARC DNS TXTレコードを生成・検証します。

ツールを開く→
DNS CAA(認証局承認)レコードジェネレーターセキュリティ

RFC 8659 に準拠した DNS CAA レコードを生成し、SSL/TLS 証明書の発行権限を信頼できる認証局(Let's Encrypt、DigiCert、Sectigo など)に限定します。

ツールを開く→