【Tomcat】Tomcat でPOODLE SSLv3脆弱性対策をする

はじめに

 * まず、POODLE について、説明する

POODLE

 * POODLE(Padding Oracle On Downgraded Legacy Encryption)は、セキュリティ脆弱性の名称で、
  暗号化接続をSSL 3.0へと強制的に「フォールバック」(ダウングレード)させたうえで、
   同プロトコルの欠陥を突いて、暗号化通信の一部(主にクッキー情報)を解読することができる 

脆弱性内容

 * 攻撃者は、SSL 3.0 を使う暗号化通信において、リクエスト送信を繰り返し試み、
   暗号化通信の一部を解読する恐れが発生。

脆弱性対策

 * SSL 3.0 を無効にする

参考文献

http://blog.trendmicro.co.jp/archives/10112
http://itpro.nikkeibp.co.jp/atcl/idg/14/481709/101700029/

具体的な対策

TomcatSSL 3.0 を無効にする

 * Tomcatの設定ファイル "server.xml"の"Connector"要素で以下のように記載する

server.xml(Tomcat8の場合)

<Connector port="8443" protocol="HTTP/1.1"
  SSLEnabled="true" maxThreads="200" 
  scheme="https" secure="true"
  clientAuth="false"
  keystoreFile="/etc/tomcat/server.jks"
  keystorePass="changeit"
  sslProtocol="TLS"                            <!-- ★ここ★ -->
  sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"/><!-- ★ここ★ -->

参考文献

http://blog.livedoor.jp/k_urushima/archives/1752935.html#sec2-6

動作確認

方法(1) SSLv3で接続する

 [1] IE11において、[ツール(歯車アイコン。Alt+X)]-[インターネットオプション]-[詳細設定]を選択
 [2] 「SSL 3.0を利用する」以外の「TLS X.X (SSL2.0)を利用する」のチェックを外す
 [3] 対象のサーバにSSL接続(https://xxx....)する
 ⇒ 対策されてたら接続できないはず

方法(2) SSLログをとる

 * 「JAVA_OPTS=-Djavax.net.debug=all」を追加し、Tomcatを起動する

手順

■方法1
 [1-1]「スタートメニュー」→「Apache Tomcat 6.0」→「Configure Tomcat」から「Java」タブを開く
 [1-2] Java Optionに「-Djavax.net.debug=all」を追記する

■方法2
 [2-1] バッチファイル%CATALINA_HOME%\bin\catalina.bat を以下のように修正する

【catalina.bat】
set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%"

rem SSL Debug log ↓★これを追記★
set LOGGING_SSL=-Djavax.net.debug=all
set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_SSL%"

 [2-2] バッチファイル%CATALINA_HOME%\bin\startup.bat などでTomcatを起動する

※ただし、上記は、TomcatWindowsのサービスとして起動している場合、使えない

方法(3) opensslコマンドの s_client を使う

openssl s_client -ssl3 -connect [hostname/IPAdress]:[port]
でエラーが表示されたら、SSLv3が無効になっている

なお、opensslコマンドの s_client については、以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/35255385.html

参考文献

SSLログの取得
http://sweng.web.fc2.com/ja/program/java/debug-tls.html
http://docs.oracle.com/javase/jp/7/technotes/guides/security/jsse/ReadDebug.html
Tomcatの起動
http://www.gs.sjts.co.jp/v4/support/tomcat_setting.html
https://staff.aist.go.jp/nakamura-akihito/research/memo/tomcat/tomcat-memo.html
opensslコマンドの s_client を使う
https://www.infocircus.jp/2014/11/14/check-ssl-3-disable/

関連記事

SSL / TLS 脆弱性

http://blogs.yahoo.co.jp/dk521123/35888290.html

設定ファイル server.xml ~ Connector / Special Features 編~

* server.xmlの属性については以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/35255676.html

トラブルシュート に役立つ Openssl コマンド

* opensslコマンドの s_client について
http://blogs.yahoo.co.jp/dk521123/35255385.html