nginx
SSL
TLS

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

More than 1 year has passed since last update.

みなさんもちろん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 TLSv1.1 TLSv1.2;
    server_name  hogehoge.com;
}

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

sudo service nginx restart

以上です。

参考

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