Apache-2.2

如何為 apache 2.2.29 升級 openssl - 仍然使用舊的 0.9.8 版本

  • September 29, 2021

我正在執行一個 10.04LTE 伺服器,我確實想為 apache 升級 openssl。

因此我下載了 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 

在我包括以下內容之前,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 的適當路徑)。您會看到 mod_ssl.so 沒有連結到/usr/local/ssl/lib

你有幾個選項來解決這個問題:

選項 #1 - 庫中的連結:

打開/etc/ld.so.conf.d/local.conf進行編輯並添加以下行:/usr/local/openssl/lib

重新編譯 Apache(記住make clean)它應該可以工作。

如果這不起作用。您也可以嘗試LDFLAGS使用您的命令直接指定configure

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:

使用配置行重新安裝 OpenSSL./config --prefix=/usr --openssldir=/usr/local/openssl shared

當您的配置行中未指定前綴時,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

引用自:https://serverfault.com/questions/701086