OpenSSL 1.0.2를 사용하여 Apache 2.4.25를 성공적으로 구축했습니다.
하지만 내부 테스트 중에 발견한 일부 보안 취약점으로 인해 Openssl을 최신 버전으로 패치하라는 요청을 받았습니다. 저도요OpenSSL 1.1.0c(또는) 1.1.0d를 사용하여 Apache httpd 2.4.25를 빌드해 보세요.
내 환경
lsb_release -a
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.11 (Tikanga)
Release: 5.11
Codename: Tikanga
Perl: 5.24
PCRE: 8.38
APR: 1.5.2
APR-util: 1.5.4
OpenSSL: 1.1.0c / 1.1.0d
위의 모든 Apache 종속성이 성공적으로 구축 및 설치되었습니다.
아파치 2.4.25 - 설치 단계
cd /my/softwares
tar -xvf httpd-2.4.25.tar -C /my/build/
cd /my/build/httpd-2.4.25/
./configure --prefix=/my/apache-httpd-2.4.25 \
--with-pcre=/my/dependencies/pcre-8.38/ \
--with-apr=/my/dependencies/apr-1.5.2 \
--with-apr-util=/my/dependencies/apr-util-1.5.4 \
--enable-ssl \
--with-ssl=/usr/local/ssl-1.1.0c \
--enable-ssl-staticlib-deps \
--enable-mods-static=ssl
make // see below errors
make install
오픈 SSL을 사용하여 소스에서 Apache를 빌드할 때 다음 오류가 발생합니다. 올바른 방향으로 나아갈 수 있도록 도와주세요.
ssl_engine_init.c: In function 'make_dh_params':
ssl_engine_init.c:61: error: dereferencing pointer to incomplete type
ssl_engine_init.c:62: error: dereferencing pointer to incomplete type
ssl_engine_init.c:63: error: dereferencing pointer to incomplete type
ssl_engine_init.c:63: error: dereferencing pointer to incomplete type
ssl_engine_init.c: In function 'ssl_init_ctx_protocol':
ssl_engine_init.c:519: warning: 'TLSv1_client_method' is deprecated (declared at /usr/local/ssl-1.1.0c/include/openssl/ssl.h:1598)
ssl_engine_init.c:520: warning: 'TLSv1_server_method' is deprecated (declared at /usr/local/ssl-1.1.0c/include/openssl/ssl.h:1597)
ssl_engine_init.c:525: warning: 'TLSv1_1_client_method' is deprecated (declared at /usr/local/ssl-1.1.0c/include/openssl/ssl.h:1604)
ssl_engine_init.c:526: warning: 'TLSv1_1_server_method' is deprecated (declared at /usr/local/ssl-1.1.0c/include/openssl/ssl.h:1603)
ssl_engine_init.c:530: warning: 'TLSv1_2_client_method' is deprecated (declared at /usr/local/ssl-1.1.0c/include/openssl/ssl.h:1610)
ssl_engine_init.c:531: warning: 'TLSv1_2_server_method' is deprecated (declared at /usr/local/ssl-1.1.0c/include/openssl/ssl.h:1609)
ssl_engine_init.c: In function 'ssl_init_ctx_session_cache':
ssl_engine_init.c:641: warning: passing argument 2 of 'SSL_CTX_sess_set_get_cb' from incompatible pointer type
ssl_engine_init.c: In function 'use_certificate_chain':
ssl_engine_init.c:861: warning: implicit declaration of function 'BIO_s_file_internal'
ssl_engine_init.c:861: warning: passing argument 1 of 'BIO_new' makes pointer from integer without a cast
ssl_engine_init.c: In function 'ssl_init_server_certs':
ssl_engine_init.c:1201: error: dereferencing pointer to incomplete type
make[3]: *** [ssl_engine_init.lo] Error 1
make[3]: Leaving directory `/my/build/httpd-2.4.25/modules/ssl'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/my/build/httpd-2.4.25/modules/ssl'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/my/build/httpd-2.4.25/modules'
make: *** [all-recursive] Error 1
답변1
정적으로 링크된 SSL 라이브러리를 사용하여 Apache를 빌드해야 하는 이유는 무엇입니까? 제 생각에는 이것은 꽤 나쁜 생각입니다. 동적 링크 라이브러리를 사용하면 필요할 때만 SSL을 업그레이드하면 됩니다. 정적의 경우 SSL이 패치될 때마다 Apache를 다시 컴파일해야 합니다.
답변2
네티즌의 댓글
"현재로서는 최신 버전의 Apache HTTPD 2.4.25 2.4 브랜치가 Openssl 1.1.x와 호환되지 않으므로 최신 1.0.2x를 고수하고 최신 보안 문제에 대한 최신 정보를 유지해야 합니다."
"OpenSSL 1.1.x가 "어제" 안정화된 이후 공식적인 성명은 없으며 아직 2.4 브랜치에 적응할 시간과 시간이 없습니다. 이 모든 내용은 주로 개발자와 사용자 httpd 메일링 리스트에서 읽을 수 있습니다."