この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは。アピリッツの本多です。
2016年03月01日にOpenSSLの新たな脆弱性が発表されました。
SSLv2が有効な環境ではTLSセッションの暗号化が破られる攻撃を受ける可能性があるというものです。
詳しくは以下の資料を参照ください。
DROWN: Breaking TLS using SSLv2
https://drownattack.com/drown-attack-paper.pdf
その他重要度の低い修正も適用されているため、opensslの更新は行ったほうが良いと思いますが、取り急ぎ、SSLv2が現在有効なのかを確かめたいと思います。
今回の脆弱性の情報と合わせて、各ドメインの脆弱性をチェックするためのサイトも公開されました。
しかしながら、サブドメインごとにシステム(ないしSSL証明書)が異なる場合にチェックが上手く出来なかったため、centos上でコマンドを叩いて確認を取りたいと思います。
コンソール上で以下のコマンドを入力します
$ openssl s_client -connect (ドメイン名):443 -quiet # プロトコルを指定せずに接続確認
$ openssl s_client -ssl2 -connect (ドメイン名):443 -quiet # SSLv2で接続確認
試しに、グーグルにアクセスしてみたところ、以下の様な応答が返って来ました。
$ openssl s_client -connect www.google.com:443 -quiet
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = Google Inc, CN = Google Internet Authority G2
verify return:1
depth=0 C = US, ST = California, L = Mountain View, O = Google Inc, CN = www.google.com
verify return:1
$ openssl s_client -ssl2 -connect www.google.com:443 -quiet
139632633231176:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:429:
SSLv2を指定した場合、接続エラーが返って来ました。
このように、グーグルでは「httpsで通信できるが、SSLv2は無効にしている」という事がわかります。
このコマンドはサブドメイン別にサーバーが分かれている場合でも確認が取れますので、もし同じ状況で上記サイトでの確認が取れない場合、今回紹介したコマンドを使って確認してみてはいかがでしょうか。
そしてSSLv2が有効になっている場合は各自対応しましょう。
もちろん、SSLv2が無効になっている場合でもopensslの更新は行ったほうが良いと思います。