Downgrade do OpenSSL no CentOS 6.5

1

O aplicativo que eu uso requer o OpenSSL 0.9.8, que já estava instalado (0.9.8e para ser específico) no meu CentOS, juntamente com o 1.0.1e, que infelizmente é usado por padrão. Tentei alterar o link simbólico libssl.so.10 para apontar para a versão mais antiga da seguinte forma:

[mckulpa@nuance-vm ~]$ ldd /usr/bin/openssl 
/usr/bin/openssl: /usr/lib64/libssl.so.10: no version information available (required by /usr/bin/openssl)
    linux-vdso.so.1 =>  (0x00007fff2edff000)
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f664457c000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003927600000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003926200000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003925a00000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003926e00000)
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003927200000)
    libdl.so.2 => /lib64/libdl.so.2 (0x000000391a600000)
    libz.so.1 => /lib64/libz.so.1 (0x000000391aa00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003919e00000)
    libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007f664421d000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003925e00000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003926a00000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x000000391be00000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x000000391a200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003919600000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x000000391b600000)
[mckulpa@nuance-vm ~]$ export LD_LIBRARY_PATH=~/libs:$LD_LIBRARY_PATH
[mckulpa@nuance-vm ~]$ echo $LD_LIBRARY_PATH 
/home/mckulpa/libs:/usr/local/Nuance/Recognizer_Service/amd64/lib:/usr/local/Nuance/OAM/x86/lib:/usr/local/Nuance/Common/x86/lib:/usr/local/Nuance/Common/amd64/lib
[mckulpa@nuance-vm ~]$ ldd /usr/bin/openssl 
/usr/bin/openssl: /home/mckulpa/libs/libssl.so.10: no version information available (required by /usr/bin/openssl)
    linux-vdso.so.1 =>  (0x00007fff91dbc000)
    libssl.so.10 => /home/mckulpa/libs/libssl.so.10 (0x00007ffe1af50000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003927600000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003926200000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003925a00000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003926e00000)
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003927200000)
    libdl.so.2 => /lib64/libdl.so.2 (0x000000391a600000)
    libz.so.1 => /lib64/libz.so.1 (0x000000391aa00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003919e00000)
    libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007ffe1abd9000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003925e00000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003926a00000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x000000391be00000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x000000391a200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003919600000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x000000391b600000)
[mckulpa@nuance-vm ~]$ ls -l libs
total 316
-rwxr-xr-x. 1 mckulpa mckulpa 321224 05-28 14:59 libssl.so.0.9.8e
lrwxrwxrwx. 1 mckulpa mckulpa     16 05-28 15:18 libssl.so.10 -> libssl.so.0.9.8e

mas tudo que recebo é um aviso e ainda assim a versão 1.0.1e é impressa:

[mckulpa@nuance-vm ~]$ openssl version
openssl: /home/mckulpa/libs/libssl.so.10: no version information available (required by openssl)
OpenSSL 1.0.1e-fips 11 Feb 2013

Alguma idéia de como fazer isso corretamente?

    
por byyyk 28.05.2014 / 15:56

3 respostas

1

Seu aplicativo precisa do 0.9.8 openssl - mas ele precisa do executável 0.9.8 openssl ou da biblioteca 0.9.8? (Ele está tentando executar o openssl ou linkar com ele?)

O pacote openssl098e do CentOS é uma "Uma versão de compatibilidade de uma biblioteca de criptografia e TLS geral", e instalará as bibliotecas apenas - ele não instalará o executável 0.9.8.

Execute o ldd no seu aplicativo para ver se ele está vinculando em uma das bibliotecas openssl (libssl e libcrypto). Para ver o que seu aplicativo está tentando executar, você pode aplicá-lo com strace -fo /tmp/strace.out e procurar as linhas execv.

Se o seu aplicativo precisar do executável openssl, você precisará recompilar o pacote 0.9.8 para o CentOS 6.

Se o seu aplicativo precisar da biblioteca openssl, verifique se você precisa da versão x86_64 ou i686, com ldd application . Se estiver procurando em / lib64, então yum install yum install openssl098e.x86_64 . Se estiver procurando em / lib, então yum install openssl098e.i686 .

    
por 28.05.2014 / 21:26
6

Copiar bibliotecas únicas de outras máquinas é um exercício quase garantido de falhar, provavelmente de maneiras estranhas e difíceis de diagnosticar. Não faça isso, e se você precisar, não o descreva como " instalado "; esse processo definitivamente não constitui instalação.

Parece haver um openssl098e RPM no repositório base do CentOS 6, o que significa que é muito provável que ele esteja no RHEL6 também. Ele será empacotado para coexistir pacificamente com o sistema principal OpenSSL, e parece conter as bibliotecas necessárias para algo que absolutamente deve ter a versão antiga. Ele não tem a ferramenta openssl do userspace, mas ficaria surpreso se o seu aplicativo exigisse isso.

Tente fazer um yum install openssl098e .

    
por 28.05.2014 / 17:46
0

Se você quiser um binário openssl 0.9.8 no CentOS 6.5, basta baixar a fonte aqui: link , compilar e instale-o (há instruções no arquivo INSTALL no código-fonte baixado) e ele funcionará bem.

Não se esqueça de configurar os caminhos corretamente, para que você possa encontrar esse binário em um lugar que você espera que seja ( /usr/bin/openssl , /usr/local/bin/openssl , etc.)

    
por 07.11.2015 / 08:54