apache、nginxのSSL/TLSのバージョン選択

はじめに

SSL、TLSは安全に通信するための規格です。1990年代にSSL1.0が登場して以降、SSL2.0、SSL3.0、TLS1.0、TLS1.1、TLS1.2とどんどん新しい規格が登場していき、そろそろTLS1.3が来そうになっています。 当然、新しいものほど安全であり、古いものはできれば使わないほうが良いわけで、2018年6月30日までにTLS1.0までの規格を無効化しなくてはいけないそうです。そのためにも、SSL/TLSのバージョン選択の方法を知っておくべきでしょう。

具体的な設定

apache

環境によって違うと思いますが/etc/httpd/conf.d/ssl.confと言った名前のファイルに

SSLProtocol all -TLSv1 -SSLv2

といった部分があると思います。 これが使用するSSL/TLSのバージョンを決めていて、+、-でどのバージョンを有効にして、どのバージョンを無効にするかを決めます。 なおallというのは、(使っているソフトウェアのバージョンにもよりますが)”+SSLv2 +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2″の略記です。

nginx

/etc/nginx/conf.d/ssl.confと言った名前のファイルにある

ssl_protocols TLSv1.1 TLSv1.2;

という部分がバージョンを決めています。ここに有効化したいバージョンを書くだけです。

確認方法

きちんと設定できているか確認する方法としてはopensslコマンドなどがあります。 opennsslの場合は

openssl s_client -connect ドメイン名:443 -バージョン名

のようにしてSSL/TLSのバージョンを指定して、通信を行うことができます。 このコマンドによって、プロンプトが表示されずにこちらの入力を待つ状態になったらそのバージョンは有効、プロンプトが出たらそのバージョンは無効であることがわかります。