我正在运行一个10.04LTE服务器,我想升级openssl的Apache。
所以我下载了openssl 1.0.2c和apache 2.2.29并编译了。 服务器正在启动,但正在使用旧的ssl版本:
curl --head http://localhost HTTP/1.1 200 OK Date: Mon, 22 Jun 2015 06:00:06 GMT Server: Apache/2.2.29 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8k Last-Modified: Sun, 18 Mar 2012 19:56:07 GMT
但是,Openssl安装在新版本中:
/usr/local/ssl/bin/openssl version OpenSSL 1.0.2c 12 Jun 2015
原始版本保留在原位:
openssl version OpenSSL 0.9.8k 25 Mar 2009
我编译了Apache:
./configure --with-included-apr --prefix=/usr/local/apache2 --enable-so --enable-rewrite --with-ssl=/usr/local/ssl --enable-ssl=shared --enable-deflate --enable-expires --enable-headers
在我joinApache之前,Apache并没有启动:
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
根据mod ssl网站,这只适用于apache 1.x
不知道这里发生了什么问题。 感谢您的任何帮助!
问题是您的Apache安装无法链接新的OpenSSL安装的共享库。 运行ldd /usr/local/apache/modules/mod_ssl.so
命令(使用mod_ssl.so的apporpriatepath)。 您会看到mod_ssl.so没有链接到/usr/local/ssl/lib
你有几个选项来解决这个问题:
选项#1 – 库中的链接:
打开/etc/ld.so.conf.d/local.conf
进行编辑并添加以下行: /usr/local/openssl/lib
重新编译Apache(记得make clean
),它应该工作。
如果这不起作用。 你也可以用你的configure
命令直接指定LDFLAGS
:
LDFLAGS=-L/usr/local/ssl/lib \ ./configure --with-included-apr --prefix=/usr/local/apache2 --enable-so --enable-rewrite --with-ssl=/usr/local/ssl --enable-ssl=shared --enable-deflate --enable-expires --enable-headers
选项#2 – 升级系统OpenSSL:
使用configuration行重新安装OpenSSL ./config --prefix=/usr --openssldir=/usr/local/openssl shared
如果在configuration行中未指定前缀,则OpenSSL安装程序将默认为/usr/local/ssl
。
快速安装说明:
cd /usr/local/src wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz tar -zxf openssl-1.0.2* cd openssl-1.0.2* ./config --prefix=/usr --openssldir=/usr/local/openssl shared make make test make install