Apache2“服务器”标头报告错误的 openSSL 版本

Apache2“服务器”标头报告错误的 openSSL 版本

有谁知道 Apache“服务器”标头从哪里提取 openSSL 版本(文件位置/目录)?我期待 openssl-1.0.1j 但 apache 正在报告 openssl-1.0.1g (系统的 openssl 版本)。

我用这些选项编译了 apache:

--enable-ssl
--with-ssl=/opt/openssl-1.0.1j

ldd mod_ssl.so

linux-vdso.so.1 =>  (0x00007fff07357000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f94d9895000)
libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f94d962b000)
libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f94d924f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f94d9032000)
libc.so.6 => /lib64/libc.so.6 (0x00007f94d8c9f000)
/lib64/ld-linux-x86-64.so.2 (0x000000360d200000)

ls -lh /lib64/libssl.so.1.0.0

/lib64/libssl.so.1.0.0 -> /opt/openssl-1.0.1j/lib/libssl.so.1.0.0

ls -lh /lib64/libcrypto.so.1.0.0

/lib64/libcrypto.so.1.0.0 -> /opt/openssl-1.0.1j/lib/libcrypto.so.1.0.0

卷曲-头主机名

HTTP/1.1 200 OK
Date: Tue, 13 Jan 2015 15:27:13 GMT
Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1g PHP/5.6.4

答案1

经过深入研究 Apache 源代码,我发现Server响应头的特定部分最终来自调用SSLeay_version(SSLEAY_VERSION);它报告 OpenSSL 库的版本(与 OpenSSL 标头中的版本相对)。

那么如果是这样的话表明mod_ssl.so应该动态加载 OpenSSL 库的预期版本,旧版本来自哪里?

我唯一能想到的是:

  • A)您编译的 Apache 不是正在运行和响应的 Apache curl;也许系统/默认 Apache 正在运行?
  • b)正在运行的 Apache 正在从与mod_ssl.so您在帖子中检查的目录不同的目录加载其动态/共享模块?

我见过的最常见的场景是第一种:手动编译的 Apache 最终安装到例如 /usr/local/apache2/bin/,但系统/默认 Apache 位于不同的位置,并且启动脚本使用该系统/默认位置,而不是您编译/安装的新 Apache 可执行文件。

相关内容