Apacheの「サーバー」ヘッダーがopenSSLバージョン(ファイルの場所/ディレクトリ)を抽出する場所を知っている人はいますか? openssl-1.0.1jを予想しましたが、Apacheはopenssl-1.0.1g(システムのopensslバージョン)を報告しました。
次のオプションを使用してApacheをコンパイルしました。
--enable-ssl
--with-ssl=/opt/openssl-1.0.1j
ldd mod_ssl.so
linux-vdso.so.1 => (0x00007fff07357000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f94d9895000)
libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f94d962b000)
libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f94d924f000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f94d9032000)
libc.so.6 => /lib64/libc.so.6 (0x00007f94d8c9f000)
/lib64/ld-linux-x86-64.so.2 (0x000000360d200000)
ls -lh /lib64/libssl.so.1.0.0
/lib64/libssl.so.1.0.0 -> /opt/openssl-1.0.1j/lib/libssl.so.1.0.0
ls -lh /lib64/libcrypto.so.1.0.0
/lib64/libcrypto.so.1.0.0 -> /opt/openssl-1.0.1j/lib/libcrypto.so.1.0.0
カールヘッダーホスト名
HTTP/1.1 200 OK
Date: Tue, 13 Jan 2015 15:27:13 GMT
Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1g PHP/5.6.4
答え1
Apacheのソースコードを詳しく見た後、Server
レスポンスヘッダの特定の部分が最終的に呼び出しから来ていることがわかりました。SSLeay_version(SSLEAY_VERSION)
;OpenSSLライブラリのバージョンを報告します(OpenSSLヘッダのバージョンとは反対)。
もしそうなら、そしてmod_ssl.so
見せるしなければならないOpenSSLライブラリの予想バージョンを動的にロードします。以前のバージョンはどこから来ましたか?
私が考えることができる唯一のことは:
- ㅏ)コンパイルしたApacheは、実行され応答するApacheではありません
curl
。おそらくシステム/基本Apacheが実行されていますか? - 雨)Apacheを実行して
mod_ssl.so
投稿で確認したディレクトリとは異なるディレクトリから動的/共有モジュールをロードしていますか?
私が見た最も一般的なシナリオは最初です。手動でコンパイルされたApacheは最終的に次の場所にインストールされます。例えば /usr/local/apache2/bin/
ただし、システム/デフォルトのApacheは別の場所にあり、起動スクリプトはコンパイル/インストールされた新しいApache実行可能ファイルではなく、そのシステム/デフォルトの場所を使用します。