先日、SSL3.0 に深刻な脆弱性の問題(POODLE)が発覚して以来、SSL3.0を無効化しているサイトも多いかと思います。
そんな中、お客様より、バーチャルホスト環境でのSSL3.0無効化が出来ないとのお問合せを頂きました。
参考までに、作業の概要を残しておきます。
○環境
httpd 2.2 + mod_ssl
○問合せ内容
apacheのssl.confにて、<VirtualHost _default_:443> ~ </VirtualHost>の「SSLProtocol all -SSLv2 -SSLv3」と設定したが、バーチャルホストで、SSL3.0が有効のままである。
○作業概要
実際に ssl.conf を確認してみると、以下のように記載されていた。
## ## SSL Virtual Host Context ### General setup for the virtual host, inherited from global configuration #DocumentRoot "/var/www/html" #ServerName www.example.com:443 # Use separate log files for the SSL virtual host; note that LogLevel # is not inherited from httpd.conf. ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # SSL Protocol support: # List the enable protocol levels with which clients will be able to # connect. Disable SSLv2 access by default: SSLProtocol all -SSLv2 -SSLv3 以下省略
バーチャルホストの設定部分は以下のようになっている。
※ホスト名は仮の名称です。
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/hoge.example.net.crt SSLCertificateKeyFile /etc/pki/tls/certs/hoge.example.net.key ServerName hoge.example.net ServerAdmin admin@example.net DocumentRoot /var/www/hoge.example.net </VirtualHost>
個別のバーチャルホストに設定が必要なので、以下の3行目を追加した。
<VirtualHost *:443> SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCertificateFile /etc/pki/tls/certs/hoge.example.net.crt SSLCertificateKeyFile /etc/pki/tls/certs/hoge.example.net.key ServerName hoge.example.net ServerAdmin admin@example.net DocumentRoot /var/www/hoge.example.net </VirtualHost>
httpdを再起動して、SSL3.0が無効化されていることを確認。
$ openssl s_client -ssl3 -connect hoge.example.net:443 CONNECTED(00000003) 3077764844:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1256:SSL alert number 40 3077764844:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596: