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 실행 파일이 아닌 해당 시스템/기본 위치를 사용합니다.