Como forçar o Debian a usar uma versão mais nova do OpenSSL?

1

Hoje eu instalei , empty '' (apenas um conjunto mínimo de pacotes) Debian 8.1 no meu VirtualBox. Eu queria brincar com a compilação de aplicativos de fontes.

Eu comecei com o OpenSSL: compilado a partir de fontes OpenSSL 1.0.1p.

user@debian8:/$ /opt/openssl/bin/openssl version
OpenSSL 1.0.1p 9 Jul 2015
user@debian8:/$ ldd /opt/openssl/bin/openssl
        linux-gate.so.1 (0xb76ed000)
        libssl.so.1.0.0 => /opt/openssl/lib/libssl.so.1.0.0 (0xb767c000)
        libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0xb748a000)
        libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb747f000)
        libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb72d5000)
        /lib/ld-linux.so.2 (0xb76f0000)

Então OpenSSH. O primeiro problema que tive foi que ./configure reclamou que a versão dos meus cabeçalhos do OpenSSL (1.0.1p) não corresponde à versão das bibliotecas do OpenSSL (1.0.1k). Eu descobri que apt instalou apenas bibliotecas do OpenSSL 1.0.1k. Então eu fiz:

LD_LIBRARY_PATH=/opt/openssl/lib ./configure (..params...) --with-ssl-dir=/opt/openssl/lib
LD_LIBRARY_PATH=/opt/openssl/lib make
sudo make install

Isso funcionou.

Mas: (observe a versão OpenSSL 1.0.1k e o caminho de libcrypto.so )

user@debian8:/opt/openssh/bin$ ./ssh -V
OpenSSH_7.0p1, OpenSSL 1.0.1k 8 Jan 2015
user@debian8:/opt/openssh/bin$ ldd ssh
        linux-gate.so.1 (0xb770b000)
        libresolv.so.2 => /lib/i386-linux-gnu/i686/cmov/libresolv.so.2 (0xb761d000)
        libcrypto.so.1.0.0 => /usr/lib/i386-linux-gnu/i686/cmov/libcrypto.so.1.0.0 (0xb7451000)
        libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb744b000)
        libutil.so.1 => /lib/i386-linux-gnu/i686/cmov/libutil.so.1 (0xb7447000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb742a000)
        libnsl.so.1 => /lib/i386-linux-gnu/i686/cmov/libnsl.so.1 (0xb7411000)
        libcrypt.so.1 => /lib/i386-linux-gnu/i686/cmov/libcrypt.so.1 (0xb73e0000)
        libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb7235000)
        /lib/ld-linux.so.2 (0xb770e000)

E, novamente, adicionar LD_LIBRARY_PATH ajuda:

user@debian8:/opt/openssh/bin$ LD_LIBRARY_PATH=/opt/openssl/lib ./ssh -V
OpenSSH_7.0p1, OpenSSL 1.0.1p 9 Jul 2015
user@debian8:/opt/openssh/bin$ LD_LIBRARY_PATH=/opt/openssl/lib ldd ssh
        linux-gate.so.1 (0xb776f000)
        libresolv.so.2 => /lib/i386-linux-gnu/i686/cmov/libresolv.so.2 (0xb7681000)
        libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0xb748f000)
        libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb7489000)
        libutil.so.1 => /lib/i386-linux-gnu/i686/cmov/libutil.so.1 (0xb7485000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7468000)
        libnsl.so.1 => /lib/i386-linux-gnu/i686/cmov/libnsl.so.1 (0xb744f000)
        libcrypt.so.1 => /lib/i386-linux-gnu/i686/cmov/libcrypt.so.1 (0xb741e000)
        libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb7273000)
        /lib/ld-linux.so.2 (0xb7772000)

Eu, é claro, testei se sshd funciona: ele escuta no 22, eu posso conectar com o PuTTY.

E agora vêm minhas perguntas:

  1. Talvez eu tenha feito algo errado?
  2. Como posso forçar o uso da versão 1.0.1p do OpenSSL pelo meu OpenSSH sem adicionar LD_LIBRARY_PATH (tentei com /etc/ld.so.conf.d/ , mas sem nenhum efeito: ldconfig/opt/openssl/lib , mas não faz ssh ou sshd use 1.0.1p).
  3. Por que openssl e ldd openssl usam o caminho correto sem LD_LIBRARY_PATH ing?
por jacek.ciach 04.09.2015 / 16:14

1 resposta

1

Veja man ld.so para a documentação do vinculador dinâmico. Para dar sua própria prioridade OpenSSL compilada, coloque-a em /usr/local/lib . Adicionar um novo caminho de pesquisa em /etc/ld.so.conf.d também deve funcionar, talvez você o coloque tarde demais? Experimente

LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 --list /usr/bin/ssh

para obter insight. Para você auto-compilado binário, uma configuração RPATH pode ajudá-lo a encontrar sua própria biblioteca, verifique com

objdump -x /opt/openssl/bin/openssl | grep RPATH

(tirada de link ).

    
por 05.09.2015 / 13:01