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.
Respostas:
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.a
elibssl.so
a partir/usr/local/lib64
para a biblioteca share no/usr/lib64
.Depois de copiar as bibliotecas, você precisa criar o link simbólico.
Após criar o link simbólico, foi necessário reconstruir o cache ldconfig :
fonte
Com sua versão original do OpenSSL, ele sabia como encontrar as bibliotecas compartilhadas porque
/usr/lib64
está 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/lib64
por padrão. Então você provavelmente só precisa adicionar este diretório ao caminho de pesquisa do vinculador, como este (como root):então execute:
Acredito que isso resolverá seu problema.
fonte
sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf
resultará 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, tentesudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"
.Eu recebi esse erro usando o Termux no ChromeOS, o que causou uma falha nos programas
npm
e nanode
linha de comando.A execução
pkg upgrade
corrigiu o problema!fonte
Você pode reinstalá-lo usando
yum install -y openssl-devel
fonte
openssl-devel
dependesse de um pacote chamadoopenssl
. Lembre-se de que já faz muito tempo que eu o toqueiyum
, portanto não posso verificar a sintaxe do comando para você.code
yum remove o openssl yum remove o openssl-devel yum clean allopenssl
(e nãoopenssl-devel
) deve ser um bom começo.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:Em seguida, você deseja remover o link existente primeiro digitando
sudo rm libcrypto.so
e 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.
fonte
A
libcrypto.so
pertence aopenssl-libs
empacotar. 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 oopenssl-libs
usando o comando/usr/bin/GET
. A sintaxe seria semelhante à abaixo se você estiver tentando restaurar a versãoopenssl-libs-1.0.2k-8.el7.x86_64
:Isso criará um
openssl-libs-1.0.2k-8.el7.x86_64.rpm
pacote para você. Você pode usá-lo para reinstalar ou extrair o.so
arquivo ausente .fonte
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.
fonte
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
Comente as configurações do diretório lib e adicione um bom caminho
Quando você terminar de editar, execute este comando:
Então você terá uma boa configuração ao executar:
ldd / usr / bin / openssl
Antes dessa correção:
Após a correção, forneci:
fonte
No CentOS 7
libssl.so.1.1
reside 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.d
pasta:echo "/usr/local/ssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1c.conf
Agora funciona.
fonte
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
fonte