Edited at

Nginxでリクエストを強制的にhttps(TLS)にリダイレクトする

みなさんもちろんhttps使ってますよね?

あらゆるサイトでhttps対応が求められる、っていうか必須な時代になってきました。

Let's Encryptなど無料証明書も出てきましたし、

個人が趣味で作ってるサイトのために証明書買うのは。。なんて言い訳も通用しませんね。

つべこべ言わず面倒くさがらず、個人情報入力ページだけ、なんてケチなことを言わずに全ページで強制的にhttps対応しちゃいましょう。


httpで来たリクエストをhttpsにリダイレクト

nginxの設定ファイルに以下を追記するだけ

server {

# httpをhttpsにリダイレクト
listen 80;
return 301 https://$host$request_uri;
}


SSLv3を無効化してTLSだけを受け入れる

一般にhttpsの時に「SSL」を使うなんて言われますが、SSLv3には脆弱性があるので無効化してしまった方が良いです。

モダンブラウザならまず間違いなくTLSに対応してますので、TLSのみを受け付けるようにしましょう。

server {

listen 443 ssl;
# SSLを無効化してTLSのみ受け付ける
ssl_protocols TLSv1.2 TLSv1.3;
server_name hogehoge.com;
}

上記2つの設定を追記したら必ずNginxを再起動します。

sudo service nginx restart

以上です。


参考

以下のサイトにホスト名を入力すると、SSLのバージョンや設定などを診断して、問題がある場合は解決策も提示してくれます。

https://www.ssllabs.com/ssltest/