🔒

HSTS (Http Strict Transport Security)を設定

2023/06/28に公開

背景

HSTSの仕様についての説明は以下の記事に詳しく書かれています。

https://zenn.dev/harusame0616/articles/b285a061e0c1f9

本記事では、HSTSを実際にサーバに設定して、HSTS preloadの設定する手順を紹介します。

HSTSのpreloadに登録

HSTSのpreloadに登録するための設定は簡単です。

ドメイン自体のAレコードのURLに対して、HTTPヘッダを1つ追加するだけです。

HSTSのpreloadに登録するためには要件が厳しいです。以下の3つを満たす必要があります。

  • includeSubdomainも付加
  • 有効期限は1年以上
  • preloadの指定

HSTSのpreloadのリストはグローバルで1つなのでリストの肥大化を防ぐためにもドメインレベルでしかも長期的に保持するような方針です。

nginxの場合は以下の1行を適切なブロック(serverあたり)に足すだけです。

server {
  add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
}

Apacheの場合は以下の1行を適切なディレクティブに足すだけです。

Header add Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"

対応ドメインの登録する場合は以下のサイトでドメイン名を入力してSubmitします。

https://hstspreload.org/

Submit後はすぐに登録されるわけではなく、保留されてから登録されるようなのでしばらく待ちます。

ホストごとにHSTSを設定する場合

上記の場合はHSTSのドメインレベルでの設定とHSTS preloadを登録しました。

各ホストごとにもHSTSは設定できるので必要に応じて設定すれば良いと思います。

例えば、以下のような感じで有効期限を指定するだけのようになります。(有効期限は1週間の例)

server {
  add_header Strict-Transport-Security 'max-age=604800';
}

余談

以下の記事で紹介したCloudflareのTLS terminationを利用すればWebの管理画面上からスイッチをONにするだけでHSTSの設定が終わります。

https://zenn.dev/matsubokkuri/articles/cloudflare-service

株式会社マインディア テックブログ

Discussion