Edited at

Apache で https のプロトコルを TLS1.2 のみに制限する

More than 1 year has passed since last update.


環境


サーバ側は CentOS 7 で検証した。

$ cat /etc/redhat-release

CentOS Linux release 7.1.1503 (Core)

Apache は 2.4.6

$ httpd -v

Server version: Apache/2.4.6 (CentOS)
Server built: Aug 24 2015 18:11:25

OpenSSL は 1.0.1e-fips だった。

$ openssl version

OpenSSL 1.0.1e-fips 11 Feb 2013


クライアントは MacOS 10.10.5 で検証した。

クライアントの OpenSSL も 1.0.1e-fips だった。


httpd.conf (かどこか) で TLS1.2 以外を無効にする

以下は、「全て」から止めたいプロトコルを除く設定。

SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

All


This is a shortcut for +SSLv2 +SSLv3 +TLSv1' or - when using OpenSSL 1.0.1 and later -+SSLv2 +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2`, respectively.


とのこと ( http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslprotocol

) なので

SSLProtocol +TLSv1.2

でもよい。でも長く書いたほうが明示されるので良いかもしれない。

1.2 以外を無効とするならば以下が良いとコメントいただいた。わかりやすい。

SSLProtocol -all +TLSv1.2


確認のしかた

openssl の s_clinet で確認した。

(wget でやろうとしたらコマンドが古くて TLSv1 の指定しかできなかった)

openssl s_client -connect my.server.example:443 -tls1_1

のように -tls1, -tls1_1, -tls1_2 のオプションをつけてテストする。

TSL1.2 のみを許可した Apache では -tls1_2 以外で接続すると

no peer certificate available

と表示されて切断される。接続できれば対話になるので GET / HTTP/1.0 などでページを取得できる。