先日の記事のコメント欄に Apache TomcatでもSSL/TLSのプロトコルバージョンを指定できると 教えて頂き、どのバージョンはどの設定なの?みたいな話が、 Google先生に聞いてもよくわからなかったので、 幾つかのバージョンのTomcatを取り出してプロトコルバージョンの設定 方法を確認してみました。

具体的には、Oracle J2SE JDKの1.7.0_71で、 いろいろなバージョンのTomcatについて、 openssl s_clientコマンドでプロトコルバージョンを指定しながら 確認していきます。 それぞれの確認結果はこんな感じ。

Tomcatバージョン設定属性
5.0.28protocols
5.5.36protocols
6.0.32protocols
6.0.37protocols
6.0.39sslEnabledProtocols
6.0.41sslEnabledProtocols
7.0.6sslEnabledProtocols
7.0.35sslEnabledProtocols
7.0.39sslEnabledProtocols
7.0.42sslEnabledProtocols
7.0.56sslEnabledProtocols
8.0.6sslEnabledProtocols
まとめてみますと、
Tomcatバージョン設定属性
5.0.x系と5.5.x 系protocols属性で設定可能
6.0.0〜6.0.37protocols属性で設定可能
6.0.39〜sslEnabledProtocols属性で設定可能
7.0.x系sslEnabledProtocols属性で設定可能
8.0.x系sslEnabledProtocols属性で設定可能
みたいな感じですかね。サーバーの対応方法の記事もアップデートしておきます。

6.0.37までのprotocols属性はマニュアルには書かれていない 隠し属性だったみたいですね。6.0.39からなんでパタッと変えたんですかねぇ。 普通なら後方互換性を持たせてprotocolsとsslEnabledProtocolsの両方を 使えるようにすればいいのに、ばっさり、protocolsを切っちゃうのはどうだったんですかねぇ。 せめて6.0.xでは一貫してprotocolsを使うようにした方がよかったんじゃないですかねぇ?