【nginx】TLS1.0/1.1での接続を禁止する
TLS1.0/1.1のサポートは主要ブラウザで2020年に終了しています。また、セキュリティ的にも推奨されないので、非対応にしてしまいましょう。webサーバーはnginxを使います。
当サイトはVPSの簡単セットアップで構築していますが、初期設定では無効化されていないので同様の環境の方は要確認です。
サーバーのTLS対応状況を確認
Qualys SSL Labsにて自分のドメインを入力することで対応状況を確認できます。
数分待つと結果が表示されます。少々時間がかかるので正常に処理されているか心配になりますが、しばらく待ってください。その後IPアドレス・スコアが表示されます(上図)。IPアドレス部分をクリックするとブラウザ別の挙動や、暗号化の方式などの詳細が表示されます。
セキュリティ的に改善したほうが良い項目に関してはオレンジで表示されるようです。
当サイトも初期設定ではTLS1.0/1.1に対応していますので、この後改善を行います。
TLS1.3への対応は少々難易度が上がるので今回は見送ります。(いずれは対応したいですね)
加えて、暗号スイートもなんでも受け付ける仕様になっているようなので改善したいと思います。
設定ファイルに追記
設定ファイルのserver内に次のコードを挿入します。
TLSのバージョンの他に暗号スイートも指定します。
server{
…
#TLSバージョンを指定
ssl_protocols TLSv1.2;
#暗号スイートを指定
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
…
}
入力したら設定を適用します。
$ sudo systemctl reload nginx
再度テストを行う
前回の3分の1程度の時間でテストが終了しました。対応する暗号スイートが少なくなったからであると思われます。
今回の改善により、スコアがB→A+になりました。
詳細を見るとTLS1.2のみに対応し、暗号スイートもしっかり指定できています。
対応できないブラウザが出てくる(手元では未再現)
当然かも知れませんが、旧バージョンの一部ブラウザでは開けなくなります。
Windows10のIEでは開くことができましたが、旧バージョンのIE・Safariでは開けないことがあると想定されます。絶対に対応する必要性がある場合は何らかの対応策が必要になってきます。
おわりに
TLS対応が必須となっているものの、なんちゃって対応では意味がないのでサーバー運営者の方はぜひ見直してみてください。
今回の修正した以外にも2点のセキュリティの改善項目が見つかりましたので、それも対応していきたいと思います。続きとして、次回はDNSにCAAレコードを追加したいと思います。
参考サイト
nginxの設定で暗号化通信をTLS1.2のみ許可する – Qiita
TLSv1.0/1.1の無効化に備えてnginxの設定を見直しました。- さやかちゃんドットネット
Nginx SSL/TLS設定を TLS 1.2と1.3に変更 | アラコキからの Raspberry Pi 電子工作
ついにTLS 1.0/1.1の無効化が決定!影響や確認・対応方法とは? | さくらのSSL