Linux
從原始碼編譯 HTTPD 和 OpenSSL,伺服器字元串錯誤?
系統具有 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"