Apache에 다른 OpenSSL 사용

Apache에 다른 OpenSSL 사용

소스에서 Apache를 컴파일하고 이를 정적으로 링크하고 있습니다 mod_ssl. 시스템에 설치된 것과 다른 버전의 OpenSSL을 사용하고 싶습니다. 패키지에서 계속 사용할 설치된 다른 소프트웨어에서 사용되는 핵심 시스템의 SSL 버전을 변경하지 않기 때문에 시스템의 나머지 부분(예: CentOS)에 영향을 주지 않는 방식으로 이 작업을 수행하고 싶습니다. 관리자.

어떻게 하면 올바르게 할 수 있나요?

Apache 컴파일을 시도했는데 --with-ssl잘 컴파일되지만 실행하려고 하면 찾을 수 없습니다.

./httpd: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

Apache를 시작할 때 설정할 수 있다고 생각했는데 LD_LIBRARY_PATH제대로 작동했지만 그것이 적절한 접근 방식인지는 확실하지 않았습니다. 이 문제를 해결하기 위해 권장되는 방법은 무엇입니까? 대체 라이브러리 검색 경로에 디렉터리를 추가하는 더 좋은 방법이 있습니까?

답변1

먼저, 당신은필요한 버전을 받으세요OpenSSL그리고 시스템 버전을 방해하지 않는 곳에 설치하세요 /opt. 예를 들면 다음과 같습니다.

$ ./config \
    --prefix=/opt/openssl-VERSION \
    --openssldir=/opt/openssl-VERSION
$ make
$ sudo make install

다음으로 최신 정보를 받으세요.아파치 2.4.x,APR 및 APR-Util도서관. 세 가지 패키지를 모두 동일한 소스 트리에 풀어야 하며, 후자의 두 패키지는 Apache가 예상하는 위치에 있어야 합니다. 예를 들어:

$ tar zxvf httpd-VERSION.tar.gz
$ cd httpd-VERSION/srclib/
$ tar zxvf ../../apr-VERSION.tar.gz
$ ln -s apr-VERSION/ apr
$ tar zxvf ../../apr-util-VERSION.tar.gz
$ ln -s apr-util-VERSION/ apr-util

그런 다음 Apache를 구성하고 설치합니다. 이 mod_ssl모듈은 정적으로 컴파일되고 다른 모든 모듈은 다음과 같이 동적으로 컴파일됩니다.

$ ./configure \
    --prefix=/opt/httpd \
    --with-included-apr \
    --enable-ssl \
    --with-ssl=/opt/openssl-VERSION \
    --enable-ssl-staticlib-deps \
    --enable-mods-static=ssl
$ make
$ sudo make install

답변2

bin 디렉토리의 envvars 파일에 LD_LIBRARY_PATH를 추가하면 apachectl이 해당 파일을 사용합니다.

관련 정보