Construção do Apache + mod_ssl não vinculando à minha construção do OpenSSL

1

Eu passei algum tempo pesquisando on-line, mas nada do que encontrei parece ajudar.

Estou rodando o CentOS 6 de 64 bits e gostaria de compilar o Apache com o mod_ssl e preciso vinculá-lo à minha própria compilação do OpenSSL (que é mais recente que a versão fornecida pelo sistema operacional).

O OpenSSL 1.1.0i está configurado com:

./config --prefix=/opt/openssl-1.1.0 --openssldir=/opt/openssl-1.1.0 shared

O Apache 2.4 está configurado com:

./configure --enable-layout=mycustomlayout \
    --prefix=/opt/httpd-2.4.34 \
    --exec-prefix=/opt/httpd-2.4.34 \
    --with-mpm=prefork \
    --enable-so \
    --enable-ssl \
    --with-ssl=/opt/openssl-1.1.0 \
    --enable-cgi \
    --enable-http2 \
    --enable-proxy-http2 \
    --with-included-apr

Parece compilar bem, mas o mod_ssl não sabe onde o OpenSSL 1.1.0 está instalado:

[root@host .libs]# ldd ./mod_ssl.so | grep -iP 'ssl|crypto'
    libssl.so.1.1 => not found
    libcrypto.so.1.1 => not found

E só funciona quando você diz explicitamente onde procurar:

[root@host .libs]# export LD_LIBRARY_PATH=/opt/openssl-1.1.0/lib:$LD_LIBRARY_PATH
[root@host .libs]# ldd ./mod_ssl.so | grep -iP 'ssl|crypto'
    libssl.so.1.1 => /opt/openssl-1.1.0/lib/libssl.so.1.1 (0x00007f069149a000)
    libcrypto.so.1.1 => /opt/openssl-1.1.0/lib/libcrypto.so.1.1 (0x00007f069100a000)

Até mesmo criar o mod_ssl estaticamente no httpd binary com --enable-mods-static=ssl não ajuda.

Eu tentei --enable-ssl , --enable-ssl --enable-ssl-staticlib-deps e --enable-ssl --enable-ssl-staticlib-deps --enable-mods-static=ssl e ainda o mesmo resultado:

    libssl.so.1.1 => not found
    libcrypto.so.1.1 => not found

Também tentei, sem sorte, configurar essas variáveis antes de ./configure :

export PKG_CONFIG_PATH=/opt/openssl-1.1.0/lib/pkgconfig:$PKG_CONFIG_PATH \
       LD_LIBRARY_PATH=/opt/openssl-1.1.0/lib:$LD_LIBRARY_PATH \
       LDFLAGS="-L/opt/openssl-1.1.0/lib"

Sei que posso adicionar /etc/ld.so.conf.d para carregar automaticamente a nova biblioteca OpenSSL ou ajustar o script de inicialização do Apache para adicionar a LD_LIBRARY_PATH , mas prefiro que ele funcione corretamente, tenha o programa onde procurar libssl.so / libcrypto.so , assim como minha compilação do PHP:

[root@host php]# export PKG_CONFIG_PATH=/opt/openssl-1.1.0/lib/pkgconfig:$PKG_CONFIG_PATH \
       LD_LIBRARY_PATH=/opt/openssl-1.1.0/lib:$LD_LIBRARY_PATH \
       LDFLAGS="-L/opt/openssl-1.1.0/lib" \
       PHP_PREFIX=/opt/php-7.2.9 \
       EXTENSION_DIR=$PHP_PREFIX/usr/lib64/php/modules
[root@host php]# ./configure […] \
    --with-imap=shared \
    --with-imap-ssl \
    --with-openssl=shared \
    --with-openssl-dir=/opt/openssl-1.1.0/bin

[root@host php]# make
[root@host php]# unset PKG_CONFIG_PATH LD_LIBRARY_PATH LDFLAGS

[root@host modules]# ldd ./openssl.so | grep -iP 'ssl|crypto'
    libssl.so.1.1 => /opt/openssl-1.1.0/lib/libssl.so.1.1 (0x00007fc2220a6000)
    libcrypto.so.1.1 => /opt/openssl-1.1.0/lib/libcrypto.so.1.1 (0x00007fc221c17000)

O que estou fazendo de errado? Isso poderia ser um bug?

    
por Not Available 29.08.2018 / 05:30

0 respostas