erro ao carregar bibliotecas compartilhadas: libcrypto.so.1.1

13

Quando executo "openssl", estou recebendo um erro como abaixo:

openssl: erro ao carregar bibliotecas compartilhadas: libcrypto.so.1.1: não é possível abrir o arquivo de objeto compartilhado: esse arquivo ou diretório não existe "

Isso aconteceu depois que eu tentei atualizar o OpenSSL de acordo com este artigo

Existe alguma maneira de corrigir isso?

OS: servidor Web CentOS 6.8: nginx / 1.10.2

Atualização # 1:

[root@host ~]# yum info openssl
Installed Packages
Name        : openssl
Arch        : x86_64
Version     : 1.0.1e
Release     : 48.el6_8.3
Size        : 4.0 M
Repo        : installed
From repo   : system-updates
Summary     : A general purpose cryptography library with TLS implementation
URL         : ***
License     : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
            : between machines. OpenSSL includes a certificate management tool and
            : shared libraries which provide various cryptographic algorithms and
            : protocols.

Available Packages
Name        : openssl
Arch        : i686
Version     : 1.0.1e
Release     : 48.el6_8.3
Size        : 1.5 M
Repo        : system-updates
Summary     : A general purpose cryptography library with TLS implementation
URL         : ***
License     : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
            : between machines. OpenSSL includes a certificate management tool and
            : shared libraries which provide various cryptographic algorithms and
            : protocols.
mayasl
fonte
2
Desculpe, você encontrou outro tutorial ruim da Internet. Você pode precisar reinstalar o sistema. Antes de prosseguir, sugiro que você pergunte sobre o problema original que estava tentando resolver fazendo isso. Provavelmente existe uma maneira melhor de atingir o objetivo original.
Michael Hampton
Eu queria instalar o aplicativo Server Monitor fornecido pela Monitis. Ele precisava de algumas dependências da biblioteca compartilhada que não estavam instaladas no meu servidor. Então, tudo isso aconteceu quando foi instalado. :(
mayasl
@ MichaelHampton Por favor, diga-me algo, exceto a reinstalação do sistema. Porque um site ativo está sendo executado nesse servidor!
May

Respostas:

20

Eu estava tendo o mesmo problema depois de instalar a última versão do 1.1.0c openssl, resolvi a questão de copiar os arquivos de biblioteca libcrypto.so.1.1, libcrypto.ae libssl.soa partir /usr/local/lib64para a biblioteca share no /usr/lib64.
Depois de copiar as bibliotecas, você precisa criar o link simbólico.

ln -s libcrypto.so.1.1 libcrypto.so
ln -s libssl.so.1.1 libssl.so

Após criar o link simbólico, foi necessário reconstruir o cache ldconfig :

sudo ldconfig
Bento
fonte
8

Com sua versão original do OpenSSL, ele sabia como encontrar as bibliotecas compartilhadas porque /usr/lib64está incluído no caminho de pesquisa do vinculador. Quando você baixou e compilou uma cópia "local" do OpenSSL, as bibliotecas compartilhadas foram colocadas /usr/local/lib64por padrão. Então você provavelmente só precisa adicionar este diretório ao caminho de pesquisa do vinculador, como este (como root):

echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf

então execute:

ldconfig

Acredito que isso resolverá seu problema.

doug.fsu
fonte
Em pelo menos distribuições modernas do Ubuntu (estou escrevendo isso no 16.04 LTS) e provavelmente outras, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confresultará em um erro de "permissão negada" porque a segunda metade do comando (a gravação do arquivo) não é executada como raiz. Se isso acontecer, tente sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf".
Matthew Cole
3

Eu recebi esse erro usando o Termux no ChromeOS, o que causou uma falha nos programas npme na nodelinha de comando.

A execução pkg upgradecorrigiu o problema!

Carl Walsh
fonte
1

Você pode reinstalá-lo usando

yum install -y openssl-devel

mzhaase
fonte
Eu tentei também, mas não ajudou!
May16
@mayasl Talvez você precise reinstalar outros pacotes também. Eu esperaria que um pacote chamado openssl-develdependesse de um pacote chamado openssl. Lembre-se de que já faz muito tempo que eu o toquei yum, portanto não posso verificar a sintaxe do comando para você.
kasperd
Atualizei minha pergunta com a saída "yum info openssl". Por favor, dê uma olhada, se for útil. Eu removi e reinstalei o openssl e o openssl-devel antes de iniciar este segmento. Não funcionou! Comandos que usei: codeyum remove o openssl yum remove o openssl-devel yum clean all
mayasl
Reinstalar openssl(e não openssl-devel) deve ser um bom começo.
Michael Hampton
Eu já tentei isso @MichaelHampton Isso é algum tipo de problema de vinculação ???
May
1

O que o @benedict disse funcionou para mim. No entanto, você pode achar que alguns dos links simbólicos estão apontando para versões mais antigas. Executar a ls -l libcrypto*partir de / usr / libs mostrará os links. Como no exemplo abaixo:

lrwxrwxrwx 1 root root      16 May 21 15:28 libcrypto.so -> libcrypto.so.1.0

Em seguida, você deseja remover o link existente primeiro digitando sudo rm libcrypto.soe copiando libcrypto.so.1.1 como o @benedict mencionado. Finalmente, você pode criar o novo link. sudo ln -s libcrypto.so.1.1 libcrypto.so

Espero que isto ajude.

Ihsan Izwer
fonte
1

A libcrypto.sopertence a openssl-libsempacotar. Se você forçar manualmente removidos (com --nodeps) este pacote ou corrompido pelo atualizá-lo, você perderá o acesso a yum, wget, curl, ssh, etc. Se o sistema tem acesso à Internet, baixar o openssl-libsusando o comando /usr/bin/GET. A sintaxe seria semelhante à abaixo se você estiver tentando restaurar a versão openssl-libs-1.0.2k-8.el7.x86_64:

/usr/bin/GET http://downloadURL/openssl-libs-1.0.2k-8.el7.x86_64.rpm > openssl-libs-1.0.2k-8.el7.x86_64.rpm

Isso criará um openssl-libs-1.0.2k-8.el7.x86_64.rpmpacote para você. Você pode usá-lo para reinstalar ou extrair o .soarquivo ausente .

Karthik
fonte
0

Passei pelo mesmo problema ... Solucionei-o executando os seguintes comandos.

ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1

Isso criará um softlink e você estará pronto.

Faheem
fonte
0

Esta é a melhor solução que encontrei ... outras soluções fornecidas em toda a Internet não sobreviverão à reinicialização do sistema;)

SO: Ubuntu 16.04

sudo vim /etc/ld.so.conf.d/libc.conf

Comente as configurações do diretório lib e adicione um bom caminho

# libc default configuration

#/usr/local/lib

/usr/lib

Quando você terminar de editar, execute este comando:

sudo ldconfig

Então você terá uma boa configuração ao executar:

ldd / usr / bin / openssl

Antes dessa correção:

 /usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
 /usr/bin/openssl: /usr/local/lib/libssl.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
/usr/bin/openssl: /usr/local/lib/libcrypto.so.1.0.0: no version information available (required by /usr/bin/openssl)
linux-vdso.so.1 =>  (0x00007ffe6d1e3000)
libssl.so.1.0.0 => /usr/local/lib/libssl.so.1.0.0 (0x00007f8999827000)
libcrypto.so.1.0.0 => /usr/local/lib/libcrypto.so.1.0.0 (0x00007f89993ed000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8999023000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8998e1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8999a97000)

Após a correção, forneci:

linux-vdso.so.1 =>  (0x00007ffec39bc000)
libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f7faad22000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f7faa8dd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7faa513000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7faa30f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7faaf8b000)
ZEROF
fonte
Para as pessoas com o caminho do CentOS, acho que um bom arquivo é /etc/ld.so.conf;), apenas para ficar claro.
ZEROF 07/07/19
0

No CentOS 7 libssl.so.1.1reside em /usr/local/ssl/lib.

Então, eu apenas precisei adicionar esse caminho aos locais padrão, onde o carregador dinâmico procura bibliotecas. Criei um arquivo separado para o meu binário openssl, chamado openssl-1.1.1c.conf, na /etc/ld.so.conf.dpasta:

echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1c.conf

Agora funciona.

Boris Burkov
fonte
-1

Depois de criar e instalar o open ssl openssl-1.1.0f, corrigi o mesmo erro para lib libssl.so.1.1, criando um link suave:

ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1

Rafael
fonte