はじめに#
HSTS が何を意味するかを最初に理解しましょう。
簡単に言うと、ブラウザにこのドメインとすべてのサブドメインが将来的に https を強制してアクセスするように伝える応答ヘッダを返すことです。これにより、ウェブサイトのアプリケーションはリダイレクト作業を行う必要がなくなり、より安全になります。
includeSubDomains#
注意すべき点は、includeSubDomains
指示を追加した場合、HSTS ルールがすべてのサブドメインに適用されるということです。例えば、example.com
にこの指示を追加した場合、以下のサブドメインにもこの HSTS ルールが適用されます:
- example.com
- example.com:* 任意のポート
- *.example.com
- *.example.com:* 任意のポート
nginx での設定#
server {
..
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains=false;" always;
..
}
includeSubDomains=false
はサブドメインにルールを適用しないことを意味します。
サブドメインへの適用を禁止する#
現在指定されたドメインのみを設定し、サブドメインに影響を与えたくない場合は、次のように追加できます:
includeSubDomains=false;
ブラウザに適用された HSTS ルールをクリアする#
誤った HSTS ルールを設定し、すでにブラウザに適用されている場合、次の 2 つの方法で解決できます:
- ブラウザのすべてのキャッシュをクリアする
- 以下のコードを追加して即座に無効にし、nginx を再起動する:
nginx -s reload
、その後再度ブラウザにアクセスし、アクセスした後、以前に設定した HSTS が無効になります:add_header Strict-Transport-Security "max-age=0" always;