我在使用Tomcat作为Web服务器的Windows机器上运行TeamCity,并使用Apache Portable Runtime(APR)和OpenSSL for SSL。
我还没有设法将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和版本1.0 .1e的OpenSSL,我找不到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问题!我现在很忙。但请询问您是否需要详细说明该程序。
答案 0 :(得分: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",以便你有一个" apr" " jni"中的文件夹文件夹中。
打开" tomcat-native-1.1.29-win32-src / jni / native / libtcnative.dsw"在Visual Studio 2013中。它将进行一些转换。
更改"调试"到"发布"。
对于项目" apr"和" tcnative"。 右键单击它们,进入属性 - >配置属性。 设置"平台工具集"到" v100"。
右键点击" tcnative"单击属性 - >配置属性 - > C / C ++ - >其他包含目录 - >修改
转到配置属性 - >链接器 - >输入 - >附加依赖性 - >修改
转到配置属性 - >链接器 - >其他图书馆目录 - >编辑。
右键单击tcnative,然后单击Build。
构建完成后,您将找到" tcnative-1.dll"
内部" tomcat-native-1.1.29-win32-src \ jni \ native \ LibR"
答案 1 :(得分:2)
目前,tcnative团队已经完成了Heartbleed修复的下一个版本的工作。所以可以从 Latest tcnative with heartbleed fix 获得此版本。
此版本即将正式发布。
答案 2 :(得分:1)
Apache Tomcat 7.0.53(最新版本)容易受到Heartbleed的影响,如果您使用的是Tomcat Native(检查tcnative-1.dll是否在bin文件夹中。如果您下载Tomcat Windows二进制文件就是这种情况)。
您可以在http://people.apache.org/~mturk/native/1.1.30/binaries/找到Windows(x86和x64)的二进制文件。
我希望他们能尽快在http://tomcat.apache.org/download-native.cgi正式发布。
只需下载DLL文件,将其放入Tomcat / bin文件夹,重新启动Tomcat即可。
要验证此修复程序,请检查文件catalina.log
:
Apr 11, 2014 8:39:27 AM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.0.1g 7 Apr 2014)
Heartbleed修复自OpenSSL 1.0.1f以来一直在OpenSSL中。
答案 3 :(得分:0)
答案 4 :(得分:0)
我相信Tomcat并不容易受到Heartbleed的攻击。</ p>
是的,APR库已链接且SSLEngine已启用。
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
但是如果你查看默认Tomcat部署的server.xml配置文件,它的SSL连接器使用JSSE,而不是APR库。
<!-- 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进行解释。除非您手动更改SSL连接器以使用APR,否则我认为可以肯定,您并不容易受到攻击。