0

Tomcat を Web サーバーとして使用し、SSL に Apache Portable Runtime (APR) と OpenSSL を使用する Windows マシンで TeamCity を実行しています。

OpenSSL のバージョンを 1.0.1g にアップグレードできませんでした。その理由は、Tomcat ネイティブ ライブラリ バイナリ (tcnative-1.dll) ( http://archive.apache.org/dist/tomcat/tomcat -connectors/native/1.1.29/binaries/tomcat-native-1.1.29-win32-bin.zip ) には、APR と OpenSSL のバージョン 1.0.1e の両方が含まれていますが、1.0.1 の新しいバイナリが見つかりません。 g.

Tomcat ネイティブ ライブラリを自分でコンパイルしようとしましたが、「libapr」プロジェクトをコンパイルしようとするとコンパイル エラーが発生します。

私が得るコンパイルエラーは次のとおりです。

Error   4   error LNK2019: unresolved external symbol __InterlockedIncrement referenced in function _apr_atomic_inc32@4 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj   libapr
Error   5   error LNK2019: unresolved external symbol __InterlockedExchangeAdd referenced in function _apr_atomic_add32@8   C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj   libapr
Error   6   error LNK2019: unresolved external symbol __InterlockedExchange referenced in function _apr_atomic_set32@8  C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj   libapr
Error   7   error LNK2019: unresolved external symbol __InterlockedDecrement referenced in function _apr_atomic_dec32@4 C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj   libapr
Error   8   error LNK2019: unresolved external symbol __InterlockedCompareExchange referenced in function _apr_atomic_cas32@12  C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\apr_atomic.obj   libapr
Error   9   error LNK1120: 5 unresolved externals   C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\apr\Debug\libapr-1.dll   1   1   libapr

Visual Studio Ultimate 2013 でコンパイルしようとしています (おそらく、Visual Studio のバージョンが新しすぎるのでしょうか?)。

この問題を解決するにはどうすればよいですか?

OpenSSL 1.0.1.g を使用して Tomcat ネイティブ ライブラリを正常に構築した人はいますか?

アップデート

「プラットフォーム ツールセット」を v100 に設定し (ここでアドバイスされているようにhttps://groups.google.com/forum/#!topic/UniMRCP/Iybpn51UYnI )、以前のコンパイル エラーはなくなりましたが、新しいエラーが発生しました。

Error   9   error C1083: Cannot open include file: 'apr.h': No such file or directory   C:\Users\heartbleed\tomcat-native-1.1.29-win32-src\jni\native\include\tcn.h 26  1   tcnative

その他のアップデート

私はなんとかコンパイルの問題を解決し、OpenSSL 1.0.1g で tcnative-1.dll をビルドしました。私の TeamCity は、Heartbleed 問題が修正されて稼働しています! 私は今忙しいです。ただし、手順の詳細な説明が必要な場合はお尋ねください。

4

5 に答える 5

3

これが私がしたことです。

Visual Studio 2013 から始めました。

Visual C++ 2010 Express をインストールします ( http://go.microsoft.com/?linkid=9709949 )。

OpenSSL ( http://slproweb.com/products/Win32OpenSSL.html ) をインストールし、「Win32 OpenSSL v1.0.1g」を選択しました。

Tomcat Native をダウンロード ( http://apache.mirrors.spacedump.net//tomcat/tomcat-connectors/native/1.1.29/source/tomcat-native-1.1.29-win32-src.zip ) どこかに解凍します。

APR ソースコードをダウンロード ( http://apache.mirrors.spacedump.net//apr/apr-1.5.0-win32-src.zip ) 解凍し、ディレクトリ "tomcat-native-1.1.29-win32" に移動します。 -src/jni". 「apr-1.5.0」ディレクトリから「apr」に名前を変更して、「jni」フォルダーに「apr」フォルダーを作成します。

Visual Studio 2013 で「tomcat-native-1.1.29-win32-src/jni/native/libtcnative.dsw」を開きます。いくつかの変換が行われます。

「デバッグ」から「リリース」に変更します。

プロジェクト「apr」および「tcnative」用。それらを右クリックして、[プロパティ] -> [構成プロパティ] に移動します。「プラットフォーム ツールセット」を「v100」に設定します。

「tcnative」を右クリックして、[プロパティ] -> [構成プロパティ] -> [C/C++] -> [追加のインクルード ディレクトリ] -> [編集] をクリックします。

  • 「./srclib/apr/include」を「../apr/include」に変更
  • 「./srclib/apr/include/arch/win32」を「../apr/include/arch/win32」に変更
  • 「C:\OpenSSL-Win32\include」(または OpenSSL をインストールした場所) を追加します。

[構成プロパティ] -> [リンカー] -> [入力] -> [追加の依存関係] -> [編集] に移動します。

  • 「libeay32.lib」を「libeay32MT.lib」に変更
  • 「ssleay32.lib」を「ssleay32MT.lib」に変更

[構成プロパティ] -> [リンカー] -> [追加のライブラリ ディレクトリ] -> [編集] に移動します。

  • 「C:\OpenSSL-Win32\lib\VC\static」 (または OpenSSL をインストールした場所) を追加します。

tcnative を右クリックし、[ビルド] をクリックします。

ビルドが完了すると、「tcnative-1.dll」が見つかります。

「tomcat-native-1.1.29-win32-src\jni\native\LibR」内

于 2014-04-10T17:45:58.573 に答える
2

現在、tcnative チームは、Heartbleed 修正を含む次のバージョンの作業を終了しています。したがって、最新の tcnative with heartbleed fixからこのバージョンを入手できます。

このバージョンはまもなく正式にリリースされます。

于 2014-04-10T18:26:38.923 に答える
0

今のところ、私が作成した dll は次のとおりです: https://docs.google.com/file/d/0B4GOp0amHg-0SU5GXzZuM2lJT3c/edit

于 2014-04-10T11:39:23.827 に答える
0

私は、Tomcat がデフォルトで Heartbleed に対して脆弱ではないと考えています。

はい、APR ライブラリがリンクされ、SSLEngine がオンになっています。

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

しかし、デフォルトの Tomcat デプロイメントの server.xml 構成ファイルを見ると、その SSL コネクターは APR ライブラリーではなく JSSE を使用しています。

<!-- Define a SSL HTTP/1.1 Connector on port 8443
     This connector uses the BIO implementation that requires the JSSE
     style configuration. When using the APR/native implementation, the
     OpenSSL style configuration is required as described in the APR/native
     documentation -->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
-->

したがって、Heartbleed を介して探索可能であってはなりません。APR を使用するように SSL コネクタを手動で変更しない限り、脆弱性はないと言って差し支えないと思います。

于 2014-04-11T06:04:27.287 に答える