我在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因为它是使用LoadModule在httpd.conf加载的:
LoadModule ssl_module modules/mod_ssl.so
我怎样才能做到这一点?
mod_ssl.so库是dynamic链接到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并不会改变库的path,只需升级OpenSSL,然后重新启动Apache,以便加载新的OpenSSL库。 最后一次OpenSSL改变了库的path是在1.0.0,我相信,所以如果你从1.0.0或更高版本更新,应该没问题。 如果你从旧版本升级(例如0.9.8),你将需要在重buildOpenSSL之后重buildmod_ssl。
我强烈build议升级你的发行版,Apache 2.2和OpenSSL 0.9都非常非常非常老,几乎不再支持。
如果这不是一个选项,你将需要为你安装的OpenSSL版本安装dev头文件,并对它们重新编译mod_ssl 。 也就是说,如果你使用的是Gentoo或者其他的“自己动手”的发行版。
否则,只需要升级和升级。 你的情况已经过期了。