error al cargar bibliotecas compartidas: libcrypto.so.1.1

13

Cuando ejecuto "openssl" obtengo el siguiente error:

openssl: error al cargar bibliotecas compartidas: libcrypto.so.1.1: no se puede abrir el archivo de objeto compartido: No existe tal archivo o directorio "

Esto sucedió después de que intenté actualizar OpenSSL de acuerdo con este artículo

¿Hay alguna forma de arreglar esto?

SO: servidor web CentOS 6.8: nginx / 1.10.2

Actualización n. ° 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
fuente
2
Lo sentimos, te has encontrado con otro mal tutorial de Internet. Puede que tenga que reinstalar el sistema. Antes de continuar, le sugiero que pregunte sobre el problema original que estaba tratando de resolver al hacer esto. Probablemente haya una mejor manera de lograr el objetivo original.
Michael Hampton
Quería instalar la aplicación Server Monitor proporcionada por Monitis. Necesitaba algunas dependencias de biblioteca compartida que no estaba instalada en mi servidor. Entonces, todo esto sucedió cuando estaba listo para instalarlos. :(
mayasl
@MichaelHampton Por favor, dime algo excepto reinstalar el sistema. ¡Porque se está ejecutando un sitio en vivo en ese servidor!
mayasl

Respuestas:

20

Yo estaba teniendo el mismo problema después de instalar la última versión de OpenSSL 1.1.0c, resolví el problema de copiar los archivos de la biblioteca libcrypto.so.1.1, libcrypto.ay libssl.sode /usr/local/lib64la biblioteca de acción al /usr/lib64.
Después de copiar las bibliotecas, debe crear el enlace simbólico.

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

Después de crear el enlace simbólico, también se requería la reconstrucción de la caché ldconfig :

sudo ldconfig
Benedicto
fuente
8

Con su versión original de OpenSSL sabía cómo encontrar las bibliotecas compartidas porque /usr/lib64está incluida en la ruta de búsqueda del enlazador. Cuando descargó y compiló una copia "local" de OpenSSL, las bibliotecas compartidas se colocaron /usr/local/lib64de forma predeterminada. Entonces, probablemente solo necesite agregar este directorio a la ruta de búsqueda del enlazador, como este (como root):

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

luego ejecuta:

ldconfig

Creo que esto resolverá tu problema.

doug.fsu
fuente
Al menos en las distribuciones modernas de Ubuntu (estoy escribiendo esto en 16.04 LTS) y probablemente en otras, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confdará como resultado un error de "permiso denegado" porque la segunda mitad del comando (la escritura del archivo) no se ejecuta como root. Si esto sucede, intente en su sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"lugar.
Matthew Cole
3

Tengo este error utilizando Termux en Chrome, lo que provocó que las npmy los nodeprogramas de línea de comandos se bloquee.

Correr pkg upgradesolucionó el problema!

Carl Walsh
fuente
1

Puedes reinstalarlo usando

yum install -y openssl-devel

mzhaase
fuente
¡Lo intenté también, pero no ayudó!
mayasl
@mayasl Quizás también necesite reinstalar otros paquetes. Esperaría que un paquete llamado openssl-develdependa de un paquete llamado openssl. Tenga en cuenta que ha pasado mucho tiempo desde que toqué yum, por lo que no puedo verificar la sintaxis del comando para usted.
Kasperd
He actualizado mi pregunta con el resultado de "yum info openssl". Por favor, eche un vistazo, si es útil. Eliminé y reinstalé openssl y openssl-devel antes de comenzar este hilo. ¡No funcionó! Comandos que utilicé: codeyum remove openssl yum remove openssl-devel yum clean all
mayasl
Reinstalar openssl, (y no openssl-devel) debería ser un buen comienzo.
Michael Hampton
Ya intenté eso @MichaelHampton ¿Es este un problema de enlace?
mayasl
1

Lo que dijo @benedict funcionó para mí. Sin embargo, puede encontrar que algunos de los enlaces simbólicos apuntan a versiones anteriores. Ejecutar ls -l libcrypto*desde / usr / libs le mostrará los enlaces. Como en el siguiente ejemplo:

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

Luego, querrá eliminar el enlace existente primero escribiendo sudo rm libcrypto.soy luego copiando libcrypto.so.1.1 como se menciona en @benedict. Finalmente puedes crear el nuevo enlace. sudo ln -s libcrypto.so.1.1 libcrypto.so

Espero que esto ayude.

Ihsan Izwer
fuente
1

El libcrypto.sopertenece al openssl-libspaquete. Si fuerza manualmente la eliminación (con --nodeps) este paquete o lo corrompe al actualizarlo, perderá el acceso a yum, wget, curl, ssh, etc. Si el sistema tiene acceso a Internet, descargue openssl-libsel comando /usr/bin/GET. La sintaxis sería similar a la siguiente si está intentando restaurar la versión 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

Esto creará un openssl-libs-1.0.2k-8.el7.x86_64.rpmpaquete para usted, puede usarlo para reinstalar o extraer el .soarchivo que falta .

Karthik
fuente
0

He pasado por exactamente el mismo problema ... Lo he resuelto ejecutando los siguientes comandos.

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

Esto creará un enlace suave y listo.

Faheem
fuente
0

Esta es la mejor solución que he encontrado en ... otras soluciones proporcionadas en Internet no sobrevivirán al reinicio del sistema;)

SO: Ubuntu 16.04

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

Comente la configuración del directorio lib y agregue una buena ruta

# libc default configuration

#/usr/local/lib

/usr/lib

Cuando termine de editar, ejecute este comando:

sudo ldconfig

Entonces tendrá una buena configuración cuando ejecute:

ldd / usr / bin / openssl

Antes de esta solución:

 /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)

Después de la solución que proporcioné:

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)
CEROF
fuente
Para las personas con la ruta CentOS, creo que un buen archivo es /etc/ld.so.conf;), para que quede claro.
CEROF
0

En CentOS 7 libssl.so.1.1reside en /usr/local/ssl/lib.

Así que solo tuve que agregar esta ruta a las ubicaciones predeterminadas, donde el cargador dinámico busca bibliotecas. Creé un archivo separado para mi binario openssl, llamado openssl-1.1.1c.conf, en la /etc/ld.so.conf.dcarpeta:

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

Ahora funciona.

Boris Burkov
fuente
-1

Después de construir e instalar open ssl openssl-1.1.0f, arreglé el mismo error para lib libssl.so.1.1 creando un enlace suave:

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

Rafael
fuente