我可以升级 apache 使用的 OpenSSL 版本而无需重新编译服务器,而只需升级 mod_ssl 吗?

我可以升级 apache 使用的 OpenSSL 版本而无需重新编译服务器,而只需升级 mod_ssl 吗?

我在一台 Unix 机器上有一个 Apache 服务器:

Apache/2.2.29 (Unix) OpenSSL/0.9.8zg

我想将 OpenSSL 版本升级到 1.0.2,这是我的系统上当前安装的版本:

machine:/ user$ openssl version
OpenSSL 1.0.2d 9 Jul 2015

我可以在不重新编译整个服务器的情况下做到这一点吗?我是否只需重新编译它,mod_ssl因为它已在内部加载httpd.confLoadModule

LoadModule ssl_module modules/mod_ssl.so

我怎样才能做到这一点?

答案1

mod_ssl.so库动态链接到 OpenSSL:

$ ldd mod_ssl.so | egrep 'lib(ssl|crypto)'
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f23f7209000)
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f23f6e26000)

只要您的 OpenSSL 升级不会更改库的路径,您只需升级 OpenSSL,然后重新启动 Apache,以便加载新的 OpenSSL 库。我相信 OpenSSL 上次更改库路径是在 1.0.0 中,因此如果您从 1.0.0 或更高版本更新,应该没问题。如果您从旧版本(例如 0.9.8)升级,则需要在重建 OpenSSL 后重建 mod_ssl。

答案2

我强烈建议升级您的发行版,Apache 2.2 和 OpenSSL 0.9 都非常非常旧,并且几乎不再受支持。

如果这不是一个选项,您将需要为已安装的 OpenSSL 版本安装开发标头并mod_ssl针对它们重新编译。也就是说,如果您使用的是 Gentoo 或其他“自己动手”类型的发行版。

否则,就鼓起勇气升级吧。对于你来说,这早就该升级了。

相关内容