max-ageとpreloadを指定してHSTSヘッダー値を作成
有効期間31536000秒で両方のオプションを有効にすると、max-age、includeSubDomains、preload の順に並んだ1行の値になります。断片を手でつなぐことなく、サーバーやプロキシの設定に貼り付けられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 最大有効期間 (max-age)
- 31,536,000
- 値
- max-age=31536000; includeSubDomains; preload
このHSTSヘッダー値作成ツールは、秒単位の有効期間と2つの真偽値設定を、正しい順序のStrict-Transport-Security値へ変換します。必須のmax-ageから始まり、指定された場合だけincludeSubDomainsとpreloadを追加します。負の期間や誤った型は拒否されるため、意図したブラウザポリシーと異なる、もっともらしい設定が生成されることはありません。
includeSubDomainsとpreloadの適用範囲を確認します
有効化する前に、委任されたDNSゾーンと別組織が運用するサービスを洗い出してください。preloadトークンは用途が異なります。ブラウザのプリロード制度に関する意思を示しますが、この語を加えただけではドメインは申請されず、登録も保証されず、リストも直ちに変わりません。
登録や削除には制度ごとの最新要件があるため、別途ご確認ください。このツールは特定制度の条件を強制するものではなく、値を決定的に組み立てるため、両設定を独立して指定できます。選択したトークンは慣例的な表記でmax-ageの後に一定順序で並び、未指定またはfalseなら省略されます。
この安定した順序により、構成レビュー、基準テスト、生成されたインフラ差分を確認しやすくなります。
活用例
リバースプロキシ設定を生成します
確認済みのHSTS設定を、プロキシ、ロードバランサー、エッジ規則向けの安定した値に変換します。
インフラテンプレートを統一します
文字列を手作業で組み立てず、すべての環境で同じ表記とディレクティブ順序を保ちます。
HSTSの導入を計画します
本番変更前に、短期、長期、全サブドメイン、プリロード対応の各ポリシー値を比較します。
よくある質問
max-ageを0にできますか?
はい。 0は有効な値で、対応ブラウザに対象ホストの保存済みHSTSポリシーを失効させるよう求めます。
preloadを加えるとドメインがリストに登録されますか?
いいえ。 値へトークンを加えるだけです。適格性、申請、削除にはプリロード制度ごとの手続きがあります。
結果にヘッダー名も含まれますか?
含まれません。返されるのは値の部分だけです。Strict-Transport-Security という名前はサーバーやプロキシの設定側で付け、公開後の実際の応答で正しく送られているか確認してください。
負の値や小数の有効期間はどうなりますか?
受け付けません。有効期間は0以上の整数の秒数である必要があり、負の値、小数、空欄、数字以外は、意図と違う設定がもっともらしく作られないように拒否されます。
includeSubDomains は常に有効にすべきですか?
いいえ。すべてのサブドメインが安全な接続で動く場合に限ります。そうでないと、開発用や外部業者、古いサブドメインにアクセスできなくなるおそれがあります。有効にする前に対象のゾーンとサービスを洗い出してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/security/hsts-header-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"max_age":31536000}'const res = await fetch("https://api.kit.forhosting.com/security/hsts-header-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"max_age": 31536000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/hsts-header-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"max_age": 31536000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/hsts-header-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"max_age":31536000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"max_age":31536000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/hsts-header-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"max_age": 31536000
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.hsts_header_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
生成結果はHTTPSレスポンスヘッダー、リバースプロキシの規則、インフラ構成テンプレートですぐに利用できます。
max-ageをポリシーの有効期間として慎重に選びます
0も有効であり、以前に保存されたHSTSポリシーを削除するようブラウザへ求める際によく使われます。単なる書式設定ではなく、展開方法と復旧計画に合わせて値をお選びください。小数、未指定、数値以外、負数は、必要な整数秒を安全に表せないため拒否されます。必須のmax-ageディレクティブは、対象ホストへHTTPSだけで接続することを対応ブラウザが何秒間記憶するかを指定します。このツールは期間を0以上の整数として受け取り、指数表記、丸め、単位の追加を行わず、最初のディレクティブとして出力します。正の値では、記憶した期間が終了するか、後の有効なレスポンスで置き換えられるまでポリシーが維持されます。値を長くする前に、すべての経路でHTTPSが動作すること、証明書が確実に更新されること、リダイレクトがHTTP専用の依存先を隠していないことをご確認ください。出力は値だけですので、サーバーまたはプロキシでHTTPSレスポンスのStrict-Transport-Securityフィールド名に設定してください。
includeSubDomainsとpreloadの適用範囲を確認します
指定ホストとその配下のすべてのホストへHTTPS専用ポリシーを適用する場合は、includeSubDomainsを有効にします。ドメインツリー全体を保護できる一方、HTTPSが正常に動作しない開発用、外部委託先、旧システムのサブドメインへ接続できなくなる可能性があります。
生成した値を安全に展開して検証します
一般的なWebサーバー設定では、ヘッダー名と値を別々の欄に入力します。段階的な導入では、短い正の期間から始め、監視後に対象ホストの信頼性を確認して延長できます。includeSubDomainsを使う場合は代表的な下位ホストも試し、preloadを使う場合は申請前に制度の要件を別途確認してください。この関数は純粋かつ決定的で、同じ入力から常に同じ文字列を返し、外部通信も設定保存も行いません。返された値は完全なヘッダー行ではなく、Strict-Transport-Securityレスポンスヘッダーの値として設定してください。HSTSはHTTPS経由でのみ送信してください。安全でない接続から受信した値はブラウザに無視され、HTTPリダイレクトだけでは記憶ポリシーは設定されません。アプリケーション、プロキシ、配信ネットワーク、ホスティング管理画面がヘッダーを上書き、重複、削除する場合があるため、公開側の最終レスポンスをご確認ください。ブラウザではローカル実行でき、自動化したAPIリクエストは1回$0.002です。
技術的な質問
結果にヘッダー名も含まれますか?
いいえ。値は、サーバー、プロキシ、アプリケーションで設定するStrict-Transport-Securityフィールド用です。
max-ageが負の場合はどうなりますか?
負の期間から有効なmax-ageディレクティブは作れないため、無効な入力としてリクエストが失敗します。
includeSubDomainsは常に有効にすべきですか?
いいえ。影響を受けるすべてのサブドメインでHTTPSが確実に動作すると確認した場合だけ有効にしてください。
APIリクエストの料金はいくらですか?
APIリクエストは1回$0.002です。同じ純粋な生成処理をブラウザ内でローカル実行することもできます。