Strict-Transport-Security (HSTS) ヘッダーの設定と運用
AWS
セキュリティ
HSTSヘッダーはHTTPS接続を強制し、プロトコルダウングレード攻撃を防ぐセキュリティ機構。
ヘッダーの構成要素:
-
max-age - HTTPS強制期間(秒単位)
- 31536000 = 1年間
- この期間中、ブラウザは自動的にHTTPをHTTPSに変換
- 段階的導入推奨: 300秒→86400秒→604800秒→31536000秒
-
includeSubDomains - サブドメインへの適用
- すべてのサブドメインもHTTPS強制
- 開発環境のサブドメインに注意が必要
- すべてのサブドメインがHTTPS対応であることを確認してから追加
-
preload - ブラウザプリロードリストへの登録
- 初回アクセス時からHTTPS強制(TOFU攻撃防止)
- hstspreload.orgで申請が必要
- 一度登録すると削除が困難(数ヶ月かかる)
- 本番環境で十分テスト後に検討
AWS環境での実装例(Gin):
AWSロードバランサー使用時の注意点:
- HSTSはクライアント-ロードバランサー間にのみ影響
- ロードバランサー-バックエンド間のHTTP通信には影響なし
- SSL終端をALBで行う構成と互換性あり
推奨される導入手順:
- 短期間・preloadなしで開始
- 問題なければ期間を延長
- サブドメイン構成確定後にincludeSubDomains追加
- 長期安定後、必要に応じてpreload検討(必須ではない)
preloadなしでも十分なセキュリティは確保できるため、運用状況に応じて段階的に強化することが重要。