環境
##サーバ側は 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
などでページを取得できる。