Não é possível obter o Apache 2.2.21 para compilar com o suporte ao OpenSSL

2

Tudo bem - ter alguns dias ruins aqui compilando o Apache 2.2.21 no CentOS 5.7 com os seguintes comandos de configuração:

./configure --enable-ssl=shared --with-ssl=/usr/local/openssl

Eu compilei a partir do código-fonte OpenSSL 1.0.0e da fonte:

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared zlib-dynamic

Eu tento iniciar o Apache e ele retorna:

httpd: Syntax error on line 54 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: SSL_get_servername

Se eu observar como as bibliotecas estão vinculadas, é isso que recebo:

[root@web1 modules]# ldd mod_ssl.so libssl.so.6 => /lib64/libssl.so.6 (0x00002aaaaace4000) libcrypto.so.6 => /lib64/libcrypto.so.6 (0x00002aaaaaf30000) libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaab281000) libz.so.1 => /lib64/libz.so.1 (0x00002aaaab486000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002aaaab69a000) libc.so.6 => /lib64/libc.so.6 (0x00002aaaab8b5000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00002aaaabc0e000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00002aaaabe3c000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00002aaaac0d1000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00002aaaac2d4000) /lib64/ld-linux-x86-64.so.2 (0x0000555555554000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00002aaaac4f9000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00002aaaac702000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00002aaaac904000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00002aaaacb19000) libsepol.so.1 => /lib64/libsepol.so.1 (0x00002aaaacd32000)

Basicamente, eu cansei de compilar a partir do código-fonte OpenSSL (ambos 0.9.8r e 1e), tendo yum reinstalando dos repositórios, feito um make clean e refeito o OpenSSL e o Apache várias vezes - mas não consigo para compilar na base do apache ou dinamicamente como um arquivo de objeto compartilhado.

O que estou fazendo de errado aqui?

Atualização 1:

Depois de fazer um make clean e make distclean , reconfigurei com os mesmos parâmetros acima, sem nenhum efeito.

O config.log está em Pastebin .

Atualização 2:

A modificação do LD_LIBRARY_PATH não teve nenhum efeito no lib-deps do mod_ssl.so.

UPDATE 3:

Eu compilei e recompilei muitas vezes, e verifiquei com ldconfig que o diretório de libs do OpenSSL está no meu caminho, e incluído em ld.so.conf. Ainda não é possível obter o httpd / mod_ssl para carregar a biblioteca durante a execução.

    
por angstwad 04.10.2011 / 19:16

6 respostas

4

Quando você compilou o Apache, você deve ter "--enable-so". Eu acho que você deve ter porque o módulo está tentando carregar.

Além disso, depois de compilar o openssl, assegure-se de que o sistema possa localizar a biblioteca compartilhada com "/ sbin / ldconfig -v / usr / local / openssl / lib"

e eu também gosto de editar o /etc/ld.so.conf.d/local.conf para adicionar uma linha para / usr / local / openssl / lib

    
por 05.10.2011 / 20:08
2

lembro que o openssl não cria bibliotecas compartilhadas por padrão. Eu faço isso:

./ Configure --prefix = / usr / local / openssl linux-elf compartilhado

Então você ainda tem que fazer ldconfig como acima. E diga ao apache onde encontrar bibliotecas SSL.

    
por 06.10.2011 / 02:32
1

Tive o mesmo problema alguns minutos novamente, então acrescento:

LDFLAGS=-L/usr/local/ssl/lib

e o parâmetro para ./configure (Apache) modificado de:

--with-ssl=/usr/local/ssl

para

--with-ssl=/usr/local/ssl/lib

e não é ok.

    
por 25.01.2013 / 14:21
0

ldd mod_ssl.so libssl.so.6 => /lib64/libssl.so.

indicaria que você não está se conectando com o openssl em / usr / local. faça um "make clean & makedistclean" para as suas construções apache / openssl e, em seguida, recrie / instale o openssl. ./configure [your options] apache, e verifique seu config.log para se certificar de que ele está se ligando com o lib openssl correto.

como alternativa, forneça a saída do seu config.log existente

    
por 04.10.2011 / 19:59
0

Definitivamente está ligando a instalação incorreta do OpenSSL, como apontado anteriormente. Você deve ter / usr / local / ssl / lib em ld.so.conf, mas tente com o seguinte comando de configuração do Apache:

LDFLAGS=-L/usr/local/ssl/lib \
./configure \
--enable-ssl \
--enable-mods-shared=all \
--with-ssl=/usr/local/ssl

Além disso, você tem certeza de que o próprio OpenSSL está compilando como pretendido? Poderia estar falhando em fazer bibliotecas compartilhadas em si e voltando a estática, mas ainda compilando com sucesso?

    
por 06.10.2011 / 00:50
0

Verifique os logs do SELinux. Você tem que marcar os binários com o atributo SELinux adequado.

    
por 06.10.2011 / 04:18