如何在 Tomcat 6 安装中获取 OpenSSL 版本

如何在 Tomcat 6 安装中获取 OpenSSL 版本

在读完关于 Heartbleed 安全漏洞的文章,我理解检查 Apache Tomcat 正在使用的 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 Server 2003 上使用 Tomcat 6。我尝试将日志级别更改为Info,然后更改为Debug,每次重新启动 Web 服务器时都无济于事。

答案1

OpenSSL 不是 Tomcat 的一部分。它是一个独立的应用程序。您不需要 OpenSSL 即可使用 Tomcat。OpenSSL 用于 Unix 和 Linux 系统上的 SSL。Windows 有自己的 SSL 实现,但您也可以在 Windows 上安装 openssl。

您是否为 Tomcat 使用 SSL?那么您使用类似的东西连接到 tomcat webapp 吗?https://localhost:8443或者您在两者之间使用了 IIS 或 Apache?您引用的日志示例就是一个例子!

如果您已安装 Openssl,可以按照以下步骤找到版本:

  • 单击 Windows“开始”按钮,在搜索文本框中输入“cmd”。按“Enter”打开 Windows 命令行。
  • 键入“openssl /?”以查看命令行实用程序的选项列表。这还会显示该命令的正确语法。
  • 输入“openssl version”并按“Enter”。OpenSSL 版本显示在 Windows 命令行实用程序中。

如果 openssl 命令返回错误,则可能未安装。

答案2

如果启用了 HTTPS,则在 MS-Windows 上部署 Tomcat 有几种常见的模式:

  1. Tomcat 在 IIS 后面运行,不使用 OpenSSL
  2. Tomcat 在 Apache 后面运行,OpenSSL 是 Apache 使用的
  3. 带有 JSSE 连接器 (Java SSL) 的 Tomcat 独立服务器,不使用 OpenSSL
  4. 带有 APR 连接器的 Tomcat 独立服务器,OpenSSL 的使用

如果你有一个独立的 Tomcat 服务器,你可以确定检查连接器协议配置Apache 提供的 Tomcat 6.0 二进制文件默认包含 APR(因此也包含 OpenSSL),尽管您可能不会使用它(无论如何都要升级!)。此外,如果您单独安装了 OpenSSL,从 Tomcat 的角度来看,它是无关紧要的(尽管它可能可供您的 Apache 或其他 Web 服务器使用)。

如果您使用的是官方 (contrib) Apache-2.2 Web 服务器二进制文件,OpenSSL 版本号通常会编码在安装程序包文件名中。对于 2.4,有几种不同的打包版本。至少有一个 (Apachehaus) 记录了 OpenSSL 版本提供一个openssl.exe您可以运行的,虽然它可能不在普通用户中,但PATH它位于bin/Apache 安装的子目录中。

如果您的 LogLevel 为“info”或更高,Apache 将在启动时记录 mod_ssl 和 OpenSSL 版本。自 6.0.36 起,Tomcat6 也会这样做(错误 #53057)。

查看正在运行的进程已加载的 DLL进程探索器很方便,但遗憾的是,正常的 Tomcat 二进制分发版似乎将 OpenSSL(及更多)链接到单个 DLL(tcnative-1.dll)中,而不是像 *nix 系统上的惯例那样链接到易于识别(和可替换)的libssl.dll/ libcrypto.dll(或类似)。(不过,此分析将在 Apachehaus Apache httpd 上进行。)

一种相当原始但可靠的方法是使用find(或字符串如果你已经有了它),则会出现cmd提示:

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

tcnative-1.dll如果您无法轻松找到正在运行的 tomcat6 进程,Process Explorer 将会告诉您该进程的位置。

总结一下:

  • 检查netstat -abn -p TCP443(或你使用的任何 HTTPS 端口)上的监听情况
  • 检查连接器以查看 Tomcat 是否以及如何提供 SSL
  • 检查你的网络服务器版本和 HTTPS 配置

相关内容