web-dev-qa-db-ja.com

Tomcat6インストールでOpenSSLバージョンを取得する方法

Heartbleedのセキュリティバグに関する記事 を読んだ後、ApacheTomcatが使用しているOpenSSLのバージョンを確認することをお勧めします。

記事には次の文が含まれています。

Tomcatが使用しているOpenSSLのバージョンは何ですか?

この情報は、Tomcatの起動時にAprLifecycleListenerによってログに記録されます。例えば、

10-Apr-2014 19:25:28.801 INFO [main] org.Apache.catalina.core.AprLifecycleListener.init Loaded APR based Apache Tomcat Native library 1.1.30 using APR version 1.4.8.
10-Apr-2014 19:25:28.804 INFO [main] org.Apache.catalina.core.AprLifecycleListener.init APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
10-Apr-2014 19:25:29.955 INFO [main] org.Apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized (OpenSSL 1.0.1g 7 Apr 2014)

検索に数時間を費やしましたが、Tomcatログでこの情報を見つけることができません。私が見るべき別の場所はありますか?これを理解する別の方法はありますか?

Windows Server2003でTomcat6を使用しています。Webサーバーを再起動するたびに、ログレベルをInfoに変更してから、Debugに変更しようとしましたが役に立ちませんでした。

1
Ziba Leah

OpenSSLはTomcatの一部ではありません。これは別のアプリケーションです。 Tomcatを使用するためにOpenSSLは必要ありません。 OpenSSLは、UnixおよびLinuxシステムのSSLに使用されます。 Windowsには独自のSSL実装がありますが、Windowsにopensslをインストールすることもできます。

TomcatにSSLを使用していますか?では、https://localhost:8443のようなものを使用してTomcatWebアプリケーションに接続しますか、それともIISまたはApacheの間にありますか?引用するログの例は例です!

Opensslがインストールされている場合は、次の手順に従ってバージョンを見つけることができます。

  • Windowsの[スタート]ボタンをクリックして、検索テキストボックスに「cmd」と入力します。 「Enter」を押して、Windowsコマンドラインを開きます。
  • 「openssl /?」と入力しますコマンドラインユーティリティのオプションのリストを表示します。これは、コマンドの適切な構文も示しています。
  • 「opensslバージョン」と入力し、「Enter」を押します。 OpenSSLのバージョンは、Windowsコマンドラインユーティリティに表示されます。

Opensslコマンドがエラーを返した場合は、おそらくインストールされていません。

4
SPRBRN

HTTPSが有効になっている場合、MS-WindowsでのTomcatの展開にはいくつかの一般的なモードがあります。

  1. IISの背後で実行されているTomcat、OpenSSLは使用されていません
  2. Apacheの背後で実行されているTomcat、OpenSSLはApacheで使用されているものです
  3. JSSEコネクタ(Java SSL)を備えたTomcatスタンドアロンサーバー、OpenSSLは使用されません
  4. APRコネクタを備えたTomcatスタンドアロンサーバー、OpenSSL使用中

スタンドアロンのTomcatサーバーを使用している場合は、使用されているHTTPSメソッドを コネクタプロトコル構成の検査 で判別できます。 Apacheが提供するTomcat6.0バイナリには、デフォルトでAPR(したがってOpenSSL)が含まれていますが、使用していない場合もあります(とにかくアップグレードしてください!)。さらに、OpenSSLを個別にインストールしている場合、Tomcatの観点からは関係ありません(ただし、Apacheまたは他のWebサーバーで使用される可能性があります)。

公式の(投稿)Apache-2.2 Webサーバーバイナリを使用している場合、OpenSSLのバージョン番号は通常、インストーラーパッケージのファイル名にエンコードされます。 2.4の場合、いくつかの異なるパッケージバージョンがあります。少なくとも1つの(Apachehaus)がOpenSSLバージョンを文書化し、は実行可能なopenssl.exeを提供しますが、通常のユーザーにはない場合がありますPATHApacheインストールのbin/サブディレクトリにあります。

LogLevelが「info」以上の場合、Apacheは起動時にmod_sslとOpenSSLのバージョンをログに記録します。 6.0.36以降、Tomcat6は同じことを行います( バグ#53057 )。

実行中のプロセスがロードしたDLLを確認するには Process Explorer は便利ですが、残念ながら、通常のTomcatバイナリ配布はOpenSSL(およびそれ以上)を単一のDLL =(tcnative-1.dll)* nixシステムの規則のように簡単に識別できる(そして置き換え可能な)libssl.dll/libcrypto.dll(または同様のもの)ではありません(この分析はApachehaus Apacheで機能します) httpdですが。)

かなり原始的ですが信頼できる方法は、findプロンプトからcmd(または strings がすでにある場合)を使用することです。

cd \Program Files\Apache-Tomcat\bin
find "OpenSSL" tcnative-1.dll
[...]
TLSv1 part of OpenSSL 1.0.1d 5 Feb 2013
SSLv3 part of OpenSSL 1.0.1d 5 Feb 2013
SSLv2 part of OpenSSL 1.0.1d 5 Feb 2013
DTLSv1 part of OpenSSL 1.0.1d 5 Feb 2013

Process Explorerは、実行中のTomcat6プロセスが簡単に見つからない場合にtcnative-1.dllの場所を教えてくれます。

要約すると:

  • netstat -abn -p TCPをチェックして、443(または使用しているHTTPSポート)で何がリッスンしているかを確認します
  • コネクタをチェックして、TomcatがSSLを提供しているかどうかとその方法を確認してください
  • webサーバーのバージョンとHTTPS構成を確認してください
2
mr.spuratic