経験知ロゴ

KUSANAGIのnginxでHSTSを設定する方法

※本ページはプロモーションが含まれています

HSTSの設定

ブログやWebサイトをHTTPS化したのなら「HSTS」も設定しておく必要があります。

「HSTS」は、このサイトにアクセスするときは必ずHTTPSで接続するように指示できるHTTPヘッダーで、httpではじまるURLでアクセスしてもブラウザが自動的にhttpsのURLに書き換えてアクセスしてくれるようになります。

Googleは、HTTPS化したサイトは「HSTS」を有効化するようにとアナウンスしているので、HTTPSに対応したら「HSTS」の設定も忘れずにしておきましょう。

nginxでHSTSを設定する方法を紹介します。

nginxでHSTSの設定

nginxでsslを設定している設定ファイルを開く。

僕の場合はココ。

$ sudo vi /etc/nginx/conf.d/keikenchi_ssl.conf

「server_name」の下の行に下記のように「add_header」設定を1行追加。

 server {
	listen       443 ssl http2;
	server_name  keikenchi.com;
	add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;preload';
	…
}

KUSANAGIの場合は「add_header」が書かれている場所に書かないと上手く動作しなかった。

 server {
	…
	 location ~ [^/]\.php(/|$) {
	…
		add_header X-F-Cache $upstream_cache_status;
		add_header X-Signature KUSANAGI;
		add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;preload';
	}
}
	

設定ファイルに記述したら再起動

$ sudo systemctl restart nginx

これでOK。

一度ブラウザでhttpのURLでアクセスし、リロードしたらhttpsになるか確認する。

HSTSプリロードに登録

HSTSを設定したが、httpでアクセスした場合、httpsに書き換えられるのは2度めのアクセスからになる。

HSTS Preload Submission」にドメインを登録しておけば、Firefox、Safari、IE11、Edge、Chromeでアクセスした場合は1度目のアクセスから自動でhttpsに書き換わる。
HSTSプリロード

ドメイン(このブログなら「keikenchi.com」)を入力しEnterを押すだけ。

以上で完了。

エラー

preload token

The HSTS header on that site doesn't include a preload token. This is a non-standard token but it's used to authenticate the preload request.

Fix the HSTS header and try again.

というエラーが出るようなら、nginxの設定ファイルの「add_header」に「preload」が付いていないはずなので、「preload」を追加する。

add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;

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

オーケーになった許可

httpでアクセスしたい

なんらかの理由でHTTPSをやめてhttpに戻したい場合は、先ほど設定した「add_header」の「max-age=31536000」を「max-age=0」にすれば良い。

おわりに

HTTPS化したのならHSTSの設定は忘れずにしておきましょう。

役に立ったらこの記事のシェアをお願いします

ブログのフォロー・RSS購読は下記ボタンから