erreur lors du chargement des bibliothèques partagées: libcrypto.so.1.1

13

Lorsque j'exécute "openssl", j'obtiens une erreur comme ci-dessous:

openssl: erreur lors du chargement des bibliothèques partagées: libcrypto.so.1.1: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type "

Cela s'est produit après avoir tenté de mettre à jour OpenSSL selon cet article

Y a-t-il un moyen de réparer ceci?

Système d'exploitation: serveur Web CentOS 6.8: nginx / 1.10.2

Mise à jour # 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
la source
2
Désolé, vous avez rencontré un autre mauvais didacticiel Internet. Vous devrez peut-être réinstaller le système. Avant d'aller plus loin, je vous suggère de poser des questions sur le problème d'origine que vous tentiez de résoudre en faisant cela. Il existe probablement un meilleur moyen d'atteindre l'objectif initial.
Michael Hampton
Je voulais installer l'application Server Monitor fournie par Monitis. Il avait besoin de certaines dépendances de bibliothèque partagée qui n'étaient pas installées sur mon serveur. Donc, tout cela s'est produit quand il fallait les installer. :(
Mayasl
@MichaelHampton S'il vous plaît dites-moi quelque chose sauf la réinstallation du système. Parce qu'un site en ligne fonctionne sur ce serveur!
Mayasl

Réponses:

20

Je faisais le même problème après l' installation de la dernière version de OpenSSL 1.1.0c, je résolu le problème de la copie des fichiers de bibliothèque libcrypto.so.1.1, libcrypto.aet libssl.sode /usr/local/lib64la bibliothèque d'actions à /usr/lib64.
Après avoir copié les bibliothèques, vous devez créer le lien symbolique.

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

Après avoir créé le lien symbolique, la reconstruction du cache ldconfig était également requise:

sudo ldconfig
Benoît
la source
8

Avec votre version originale d'OpenSSL, il savait comment trouver les bibliothèques partagées car il /usr/lib64est inclus dans le chemin de recherche du lieur. Lorsque vous avez téléchargé et compilé une copie "locale" d'OpenSSL, les bibliothèques partagées ont été placées /usr/local/lib64par défaut. Il vous suffit donc probablement d'ajouter ce répertoire au chemin de recherche de l'éditeur de liens, comme ceci (en tant que root):

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

puis exécutez:

ldconfig

Je crois que cela résoudra votre problème.

doug.fsu
la source
Dans les distributions Ubuntu au moins modernes (j'écris ceci sur 16.04 LTS) et probablement d'autres, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confcela entraînera une erreur "permission refusée" car la seconde moitié de la commande (l'écriture du fichier) n'est pas exécutée en tant que root. Si cela se produit, essayez sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"plutôt.
Matthew Cole
3

J'ai eu cette erreur en utilisant Termux sur ChromeOS, ce qui a provoqué le plantage des programmes en ligne de commande npmet node.

L'exécution a pkg upgraderésolu le problème!

Carl Walsh
la source
1

Vous pouvez le réinstaller en utilisant

yum install -y openssl-devel

mzhaase
la source
J'ai également essayé, mais je n'ai pas aidé!
Mayasl
@mayasl Vous devrez peut-être également réinstaller d'autres packages. Je m'attendrais à ce qu'un package appelé openssl-develdépende d'un package appelé openssl. Gardez à l'esprit que cela fait longtemps que je n'ai pas touché yum, donc je ne peux pas vérifier la syntaxe de la commande pour vous.
kasperd
J'ai mis à jour ma question avec la sortie de "yum info openssl". Veuillez jeter un coup d'œil, si cela est utile. J'ai supprimé et réinstallé openssl et openssl-devel avant de démarrer ce fil. Ça n'a pas marché! Commandes que j'ai utilisées: codeyum remove openssl yum remove openssl-devel yum clean all
mayasl
La réinstallation openssl(et non openssl-devel) devrait être un bon début.
Michael Hampton
J'ai déjà essayé ça @MichaelHampton Est-ce une sorte de problème de liaison ???
mai à
1

Ce que @benedict a dit a fonctionné pour moi. Cependant, vous pouvez constater que certains des liens symboliques pointent vers des versions plus anciennes. L'exécution à ls -l libcrypto*partir de / usr / libs vous montrera les liens. Comme dans l'exemple ci-dessous:

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

Ensuite, vous voudrez d'abord supprimer le lien existant en tapant sudo rm libcrypto.sopuis en copiant libcrypto.so.1.1 comme @benedict l'a mentionné. Enfin, vous pouvez créer le nouveau lien. sudo ln -s libcrypto.so.1.1 libcrypto.so

J'espère que cela t'aides.

Ihsan Izwer
la source
1

L' libcrypto.soappartient au openssl-libspackage. Si vous forcez manuellement la suppression (avec --nodeps) ce package ou le corrompez en le mettant à niveau, vous perdrez l'accès à yum, wget, curl, ssh, etc. Si le système a accès à Internet, téléchargez-le openssl-libsà l'aide de la commande /usr/bin/GET. La syntaxe ressemblerait à celle ci-dessous si vous essayez de restaurer la version 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

Cela créera un openssl-libs-1.0.2k-8.el7.x86_64.rpmpackage pour vous, vous pouvez l'utiliser pour réinstaller ou extraire le .sofichier manquant .

Karthik
la source
0

Je suis passé par exactement le même problème ... Je l'ai résolu en exécutant les commandes suivantes.

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

Cela créera un lien logiciel et vous êtes prêt à partir.

Faheem
la source
0

C'est la meilleure solution que j'ai trouvée autour ... d'autres solutions fournies partout sur Internet, ne survivront pas au redémarrage du système;)

OS: Ubuntu 16.04

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

Commenter les paramètres du répertoire lib et ajouter un bon chemin

# libc default configuration

#/usr/local/lib

/usr/lib

Une fois l'édition terminée, exécutez cette commande:

sudo ldconfig

Ensuite, vous aurez un bon réglage lorsque vous exécutez:

ldd / usr / bin / openssl

Avant ce correctif:

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

Après la correction, j'ai fourni:

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
la source
Pour les personnes avec le chemin CentOS, je pense que le bon fichier est /etc/ld.so.conf;), juste pour être clair.
ZEROF
0

Sur CentOS 7 libssl.so.1.1réside dans /usr/local/ssl/lib.

J'ai donc juste dû ajouter ce chemin aux emplacements par défaut, où le chargeur dynamique recherche les bibliothèques. J'ai créé un fichier séparé pour mon binaire openssl, nommé openssl-1.1.1c.conf, dans le /etc/ld.so.conf.ddossier:

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

Maintenant ça marche.

Boris Burkov
la source
-1

Après avoir construit et installé open ssl openssl-1.1.0f, j'ai corrigé la même erreur pour lib libssl.so.1.1 en créant un lien logiciel:

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

Rafael
la source