今月に入ってCVE-2014-3566 aka POODLEという脆弱性が発表され、サーバーまたはクライアントのSSLv3を無効にする事が推奨されています。
私の方ではApacheでSSLを利用しているので、その方法のメモを残しておきます。
前回のheartbleedなどと違い今回はSSLv3そのものを無効にしてTLSのみにするという単純な対策。
ssl.conf内にある設定を下記のように変更してあげます。
# SSL Protocol support:
# List the enable protocol levels with which clients will be able to
# connect. Disable SSLv2 access by default:
#SSLProtocol all -SSLv2
# 20141023 CVE-2014-3566 aka POODLE
SSLProtocol all -SSLv2 -SSLv3
下の2行が追加した行です。これで再起動すればSSLv3は無効になります。この時SSLサイトを複数立ち上げている場合、設定の仕方によってはサイト分の設定が必要になるので注意が必要です。念の為conf.dの下とかで grep SSLProtocol * みたいに検索をかけておいた方が良さそうです。
この設定を見てSSLv1って存在しないの?と疑問に思ったのですが、wikiによれば設計レビュー段階で大きな脆弱性があったために破棄され、実装された製品は存在しないとの事。
v2も脆弱性が存在して結局非推奨。今回のv3も非推奨になり、ネットスケープが考案したSSLは全滅。結局TLSが残るのみですね。
TLSは今の所、全バージョンで仕様自体の問題は見つかっていないようで、SSLのみに対応したクライアントを想定しなければTLSのみでも問題はなさそうですね。
サーバー側はこれでOKですが、ブラウザ側もSSLを無効にした方が望ましいです。各ブラウザの設定方法を簡単に載せておきます。
InternetExplorer 4.x以降?
InternetExplorerはインターネットオプションを変更する事でSSLを無効化できます。TLSの対応は4以降で、4,5,6ではデフォルトでTLSがオフになっているので、そこも合わせて設定してやります。それにしてもIE4ってTLS対応してたんですね。
Firefox
Firefoxはabout:confgを開、security.tlsで検索します。
security.tls.version.minの値を0から1に変更するとSSLが無効になります。
Chrome
コマンドラインオプションで–ssl-version-min=tls1と指定する
設定が完了したらhttps://zmap.io/sslv3/に接続してSSLが無効になっているかチェックできます。正常に無効になっている場合、「Good News! Your browser does not support SSLv3. 」と表示されます。