Linux

從原始碼編譯 HTTPD 和 OpenSSL,伺服器字元串錯誤?

  • July 14, 2017

系統具有 OpenSSL 版本 1.0.1e,這是 CentOS 7 儲存庫中可用的版本,但從那時起(2013 年)有很多 CVE

Httpd 是從原始碼編譯的

./configure --enable-so --enable-ssl --enable-cache-disk --enable-cache-socache --enable-deflate --with-mpm=prefork --enable-fpm --enable-cgi --with-ssl=/usr/local/ssl/include --enable-ssl-static-lib-deps --enable-mods-static=ssl

然而,即使在重新啟動後,伺服器 ssl 版本也會顯示:

curl --head http://localhost

HTTP/1.1 301 Moved Permanently
Date: Fri, 14 Jul 2017 04:46:26 GMT
Server: Apache/2.4.25 (Unix) OpenSSL/1.0.1e-fips PHP/5.6.30 mod_myfixip/1.4
Location: XYZ
Cache-Control: max-age=0
Expires: Fri, 14 Jul 2017 04:46:26 GMT
Content-Type: text/html; charset=iso-8859-1

但在仔細檢查 httpd 二進製文件後,它看起來像預期的那樣用 1.0.21 編譯:

^@ssl_engine_init.c^@AH02209: CA certificate: %s^@init_server^@chil^@TLSv1.2, ^@TLSv1.1, ^@TLSv1, ^@SSLv3, ^@SSLProxy^@with^@without^@AH03039: %i:^@OpenSSL 1.0.2l  25 May 2017^@OpenSSL^@Init: ^@SSL_VERSION_INTERFACE^@SSL_VERSION_LIBRARY^@

您必須在啟動 httpd 之前將手動編譯的 openssl “lib” 路徑添加到 " envvars " 文件或手動將其添加到**$LD_LIBRARY_PATH以便 httpd 使用它而不是系統版本。**

envvars文件包含在 httpd 的 bin 目錄中,它也被 apachectl 腳本使用。它是為此目的而製造的。

那是:

export LD_LIBRARY_PATH="/path/to/ssl/lib:$LD_LIBRARY_PATH"

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