HSTSの設定について
HSTSとは
HSTS とは HTTP の Strict-Transport-Security レスポンスヘッダーのことで,ウェブサーバーがブラウザに HTTP ではなく,HTTPS でアクセスするように指示するためのもの.
HSTS の目的
そのサイトが HTTP でアクセスできるとアクセスポイントの偽装などで,偽のサイトへの誘導がなされたときに http で偽のサイトに誘導されて騙されてしまう可能性が出てくる.
HSTS だと初回に正しいサイトにアクセスした時に「HTTPS でないとアクセスできないよ」とブラウザに登録されるので,そのサイトに http でアクセスしようとしてもアクセスできないということになり,利用者の安全は守られることになる.
しかし,これだと初回に http で偽サイトに誘導されてしまう場合に問題が防げない.
それを防ぐ仕組みもグーグルが提供してくれていて,それを「HSTSプリロード」(HSTS preload)という.
あらかじめ,「自分のドメインは https でしかアクセスできないよ」とこのサイトに登録をしておけば,初回のアクセス時から https でしかアクセスできないことになり,より安全になるというわけだ.
以下のサイトがそのHSTSプリロードの登録サイトになる.
だから,HSTS を自分のウェブサーバーで設定する場合,ここまでやらないと「頭隠して尻隠さず」状態になってしまって,少し意味がないことになるので気をつけましょう.
HSTS の設定方法
そもそも,そのドメインで http でアクセスする可能性があるサーバーが存在する場合はこの設定はしてはいけない.
有効期間を設定する必要があるが,その期間中は http でアクセスできなくなってしまう.十分に気をつけましょう.
設定の際には少し気を付けることがあって,とにかく http の状態でアクセスさせないことが重要なので,転送設定をしている場合には順序を考える必要がある.
例えば,
http://rectus.co.jp でアクセスされたときに https://www.rectus.co.jp に飛ばすというような転送処理をしていた場合,これはあくまでも rectus.co.jp → www.rectus.co.jp の転送処理の前に http → https を先に行わなくてはならない.
このような設定を行うための .htaccess でのよい設定例があったので紹介する.
ただし,これはサブドメインというか別ホストを使っている場合にはうまく行かない.
そこでこれを参考に改良したものを下に掲載する.
ドメインは xxxxxx.co.jp でウェブサーバーは www.xxxxxx.co.jp の場合の設定である.
yyy.xxxxxx.co.jp というホストが存在しても問題なく,xxxxxx.co.jp は www.xxxxxx.co.jp に転送される.
<IfModule mod_rewrite.c>
RewriteEngine on
# Set HSTS env var only if HTTPS
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=HSTS:1]
# Redirect HTTP to HTTPS on the same host
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Redirect xxxxxx.co to www.xxxxxx.co (HTTPS only)
RewriteCond %{HTTP_HOST} ^xxxxxx\.co
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HSTS
</IfModule>
注意点
Xserver(エックスサーバー) を利用してホスティングしている場合,この転送設定のせいで無料独自SSLの更新が出来なくなる.
上記設定を除いてから,手動で更新を行えば問題なく更新出来る.
.htaccess の修正はサブドメインを使っている場合は気を付ける必要がある.
サブドメインではなく,ドメイン直下の .htaccess での転送設定を止めなければならなかった.
ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.