A recompilação Apache não encontra o novo OpenSSL

1

Estou tentando atualizar o Apache e o OpenSSL ao mesmo tempo. Eu obtive o Apache compilado com todos os módulos que eu preciso, e ele aparece e roda, mas ainda mostra uma versão antiga do OpenSSL.

Aqui está o meu comando de configuração:

./configure --prefix=/usr/local/apache2.2.24/ --with-ssl=/usr/local/openssl-1.0.1e/ --enable-mods-shared="all [sic] ssl rewrite"

O OpenSSL nesse diretório está correto:

$ /usr/local/openssl-1.0.1e/bin/openssl version
OpenSSL 1.0.1e 11 Feb 2013

No entanto, quando eu consultar o servidor, ainda recebo uma versão antiga do OpenSSL no cabeçalho:

$ curl -I http://www.mydomain.com/
HTTP/1.1 200 OK
Date: Thu, 09 May 2013 14:51:59 GMT
Server: Apache/2.2.24 (Unix) DAV/2 mod_ssl/2.2.24 OpenSSL/1.0.0g

Eu recompilei algumas centenas de vezes nos últimos dias e não consigo entender o que está perdendo. Cada um dos diretórios foi excluído e feito a partir do zero (incluindo os diretórios de origem nos quais estou compilando).

O sistema é uma versão mais antiga do FreeBSD com uma ports install quebrada, então não posso usar portas para a compilação.

    
por Jack M. 09.05.2013 / 17:03

3 respostas

5

Primeiro, CORRIGUE SUAS PORTAS - rm -rf /usr/ports se for necessário. Isso não prejudicará o software instalado. Use portsnap para obter uma maneira fácil de obter uma nova cópia da árvore de portes. Usuários avançados podem usar svn .

Segundo, NÃO compile o Apache da fonte baixada. Você está implorando por problemas, e não deve se surpreender que você tenha encontrado. Use a árvore de portas. Mesmo se você quiser usar uma versão diferente do software da árvore de Portos, aprenda a modificar sua árvore local para a versão desejada.

Execute ldd no arquivo mod_ssl.so, já que você está compilando o código-fonte baixado, a direção da instalação provavelmente não é padrão (o que significa que futuros administradores do seu sistema não conseguirão encontrar o diretório facilmente).

Veja o que o libssl.so está usando e de onde ele será carregado. Certifique-se de ter as últimas bibliotecas OpenSSL nesse local.

Quando você constrói o Apache a partir de portas, ele deve sempre construir contra a versão instalada do OpenSSL (libssl.so in /usr/local/lib ). Como esse não é o caso, ninguém sabe o que está carregando.

    
por 28.05.2013 / 05:36
1

Você pode considerar corrigir sua coleção de portas. Se você estiver executando uma versão sem suporte, talvez não consiga obter as versões mais recentes das portas desejadas. Caso contrário, você pode seguir as instruções do Manual sobre como usar o portsnap para obter a coleção de portas mais recente.

    
por 28.05.2013 / 05:26
1

Uma solução alternativa é usar o rpath ao configurar o apache, ou seja:

$ LDFLAGS=-Wl,-rpath=/opt/openssl/lib ./configure ...

Verifique depois de instalar o apache:

$ ldd /opt/apache-httpd/modules/mod_ssl.so
...
    libssl.so.1.0.0 => /opt/openssl/lib/libssl.so.1.0.0 (0x00007fdd56278000)
    libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0x00007fdd55e9c000)
...
    
por 06.08.2014 / 02:59