我在一台 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.conf
?LoadModule
:
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 或其他“自己动手”类型的发行版。
否则,就鼓起勇气升级吧。对于你来说,这早就该升级了。