O cabeçalho do Apache2 'Server' reporta uma versão errada do openSSL

2

Alguém sabe onde o cabeçalho Apache 'Server' extrai a versão do openSSL (local / diretório do arquivo)? Estou esperando o openssl-1.0.1j, mas o apache está reportando o openssl-1.0.1g (versão openssl do sistema).

Eu compilei o apache com estas opções:

--enable-ssl
--with-ssl=/opt/openssl-1.0.1j

ldd mod_ssl.so

        linux-vdso.so.1 =>  (0x00007fff07357000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f94d9895000)
        libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007f94d962b000)
        libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007f94d924f000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f94d9032000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f94d8c9f000)
        /lib64/ld-linux-x86-64.so.2 (0x000000360d200000)

ls -lh /lib64/libssl.so.1.0.0

/lib64/libssl.so.1.0.0 - > /opt/openssl-1.0.1j/lib/libssl.so.1.0.0

ls -lh /lib64/libcrypto.so.1.0.0

/lib64/libcrypto.so.1.0.0 - > /opt/openssl-1.0.1j/lib/libcrypto.so.1.0.0

curl --head hostname

HTTP/1.1 200 OK
Date: Tue, 13 Jan 2015 15:27:13 GMT
Server: Apache/2.2.29 (Unix) mod_ssl/2.2.29 OpenSSL/1.0.1g PHP/5.6.4
    
por devnull 13.01.2015 / 21:32

1 resposta

1

Depois de muito pesquisar sobre a origem do Apache, descobri que essa parte específica do cabeçalho de resposta Server vem, em última análise, da chamada SSLeay_version(SSLEAY_VERSION) ; que relata a versão das bibliotecas do OpenSSL (em oposição à versão nos cabeçalhos do OpenSSL).

Se for esse o caso, e o mod_ssl.so mostra que deve carregar dinamicamente as versões esperadas das bibliotecas do OpenSSL, de onde vem a versão antiga ?

As únicas coisas em que consigo pensar são:

  • a) o Apache que você compilou não é aquele que está rodando e respondendo a curl ; talvez o sistema / default do Apache esteja rodando?
  • b) o Apache em execução está carregando seus módulos dinâmicos / compartilhados de um diretório diferente do que o mod_ssl.so que você examinou em sua postagem?

O cenário mais comum que vi é o primeiro: o Apache compilado manualmente acaba sendo instalado em por exemplo /usr/local/apache2/bin/ , mas o sistema / padrão do Apache está em um local diferente, e a inicialização os scripts usam esse sistema / local padrão, em vez do novo executável Apache que você compilou / instalou.

Espero que isso ajude!

    
por 19.02.2016 / 02:38