我在一台使用Tomcat作为web服务器的Windows机器上运行TeamCity,并使用(APR)和OpenSSL作为SSL。
我没有成功地将OpenSSL的版本升级到1.0.1g,我认为原因在于Tomcat本机库二进制文件(tc天生-1.dll) (http://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.29/binaries/tomcat-native-1.1.29-win32-bin.zip)同时包含OpenSSL的APR和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终极2013中编译(可能是Visual的新版本?)。
我该如何解决这个问题?
是否有人成功地使用OpenSSL 1.0.1.g构建了Tomcat本机库?
更新
我已经将"Platform“设置为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构建了一个to 1.dll,并且我的TeamCity已经启动并运行,修复了心脏出血问题!我现在很忙。但是,请询问你是否需要详细的程序描述。
发布于 2014-04-10 18:26:38
目前,本机团队已经完成了下一个版本的工作,该版本具有“心脏出血”修复程序。所以我们可以从http://people.apache.org/~mturk/native/1.1.30/获得这个版本。
这个版本很快就会正式发布。
发布于 2014-04-10 17:45:58
我就是这么做的。
我从Visual 2013开始。
安装VisualC++ 2010 Express (http://go.microsoft.com/?linkid=9709949)。
安装OpenSSL (http://slproweb.com/products/Win32OpenSSL.html),我选择了"Win32 OpenSSL v1.0.1g“。
下载Tomcat原住民(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-本机-1.1.29-Win32-src/jni”目录中。将其从"apr-1.5.0“目录重命名为"apr",以便在"jni”文件夹中有一个"apr“文件夹。
在2013中打开"tomcat-native-1.1.29-win32-src/jni/native/libtcnative.dsw“。它会带来一些转变。
从“调试”改为“发布”。
对于项目"apr“和"tcnative”。右键单击它们,进入Properties ->配置属性。将"Platform“设置为"v100”。
右键单击"tcnative“,单击”属性“->配置属性-> C/C++ ->附加包含目录->编辑
转到配置属性->链接器->输入->附加依赖项->编辑
转到Configuration -> Linker ->附加库目录->编辑。
右键单击tcnative,然后单击Build。
构建完成后,您将找到“tc本机-1.dll”
内部"tomcat-native-1.1.29-win32-src\jni\native\LibR“
发布于 2014-04-11 06:58:03
Apache 7.0.53 (最新版本)如果您正在使用Tomcat本机(请检查Tomcat 1.dll是否在bin文件夹中),则容易受到心脏出血的攻击。如果您下载Tomcat二进制文件,情况就是如此。
您可以在x86和x64上找到http://people.apache.org/~mturk/native/1.1.30/binaries/的二进制文件。
我希望他们能很快在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)自OpenSSL 1.0.1f以来,心脏出血修复一直在OpenSSL中。
https://stackoverflow.com/questions/22982848
复制相似问题