阅读下面提到的文章后,我了解到检查 Tomcat 正在使用的 OpenSSL 版本是一种很好的做法。
https://wiki.apache.org/tomcat/Security/Heartbleed
文章中有这么一句话:
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 Server 2003、Tomcat 6 上。我尝试将日志级别降低到“信息”,然后降低到“调试”,重新启动 Web 服务器却没有获取此信息。
答案1
Tomcat 的版本在这里并不重要,重要的是您使用的 tcnative-1.dll 的版本。最新版本是 Tomcat Native 1.1.30。这是 2014 年 4 月 15 日发布的 heartbleed 漏洞修复。
从 Windows 开始:检查 tcnative-1.dll 属性来识别版本。
如果您使用的是 1.1.23 或更早版本,那么您就不会受到此特定漏洞的影响。如果您使用的是 1.1.24-1.1.29,那么您可能会受到此漏洞的影响。
如果您使用默认的 JSSE 来支持 SSL,那么无论您的 Tomcat 使用的是哪个版本的 OpenSSL,您都可能不会受到影响。手动将 SSL 连接器更改为使用 APR 可能会使您受到攻击。
编辑
启动时查看环境
编辑 $CATALINA_BASE\bin\setenv.bat(如有必要,请创建该文件)并将 tc-native 库、apr 和 OpenSSL 的路径添加到 PATH。例如:
set PATH=%PATH;C:\cygwin\home\support\tomcat-native-current-win32-src\jni\native\Debug;C:\cygwin\home\support\tomcat-native-current-win32-src\jni\apr\Debug;C:\OpenSSL\lib\VC
OpenSSL 的哪些版本受到影响?OpenSSL 不同版本的状态:
OpenSSL 1.0.1 到 1.0.1f (含) 存在漏洞 OpenSSL 1.0.1g 不存在漏洞 OpenSSL 1.0.0 分支不存在漏洞 OpenSSL 0.9.8 分支不存在漏洞 该漏洞于 2011 年 12 月被引入 OpenSSL,并且从 2012 年 3 月 14 日 OpenSSL 发布 1.0.1 版开始就一直存在。2014 年 4 月 7 日发布的 OpenSSL 1.0.1g 修复了该漏洞。
参考: