помилка під час завантаження спільних бібліотек: libcrypto.so.1.1


13

Коли я запускаю "openssl", я отримую помилку, як показано нижче:

openssl: помилка під час завантаження спільних бібліотек: libcrypto.so.1.1: не вдається відкрити спільний файл об'єкта: такого файлу чи каталогу немає "

Це сталося після того, як я спробував оновити OpenSSL відповідно до цієї статті

Чи все-таки це можна виправити?

ОС: CentOS 6.8 Веб-сервер: nginx / 1.10.2

Оновлення №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.

2
Вибачте, ви натрапили на ще один поганий підручник з Інтернету. Можливо, доведеться перевстановити систему. Перш ніж йти далі, я пропоную вам поцікавитись оригінальною проблемою, яку ви намагалися вирішити, роблячи це. Напевно, є кращий спосіб досягти початкової мети.
Майкл Хемптон

Я хотів встановити додаток Server Monitor, наданий Monitis. Потрібні були деякі спільні бібліотечні залежності, які не були встановлені на моєму сервері. Отже, все це сталося, коли доводилося їх встановлювати. :(
mayasl

@MichaelHampton Будь ласка, скажіть мені щось, крім перевстановлення системи. Тому що на цьому сервері працює живий сайт!
mayasl

Відповіді:


20

У мене була така ж проблема , після установки останньої версії OpenSSL 1.1.0c, я вирішив проблему копіювання бібліотечних файлів libcrypto.so.1.1, libcrypto.aі libssl.soз /usr/local/lib64бібліотеці акцій на /usr/lib64.
Після копіювання бібліотек вам потрібно створити символічне посилання.

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

Після створення символічного посилання також була потрібна відновлення кешу ldconfig :

sudo ldconfig

8

З вашою оригінальною версією OpenSSL він знав, як знайти спільні бібліотеки, оскільки /usr/lib64він включений у шлях пошуку лінкера. Коли ви завантажували та компілювали "локальну" копію OpenSSL, спільні бібліотеки розміщувались /usr/local/lib64за замовчуванням. Тож вам, мабуть, просто потрібно додати цей каталог до шляху пошуку посилання, наприклад цього (як root):

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

потім виконати:

ldconfig

Я вірю, що це вирішить вашу проблему.


Принаймні сучасні дистрибутиви Ubuntu (я пишу це 16.04 LTS) і, ймовірно, інші, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confпризведе до помилки "відмовлено у дозволі", оскільки друга половина команди (запис файлу) не виконується як root. Якщо це сталося, спробуйте sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"замість цього.
Меттью Коул

3

Я отримав цю помилку , використовуючи Termux на ChromeOS, що викликало npmі nodeпрограму командного рядка аварії.

Запуск pkg upgradeвирішив проблему!


1

Ви можете перевстановити його за допомогою

yum install -y openssl-devel


Я також спробував це, але не допомогло!
mayasl

@mayasl Можливо, вам доведеться перевстановити й інші пакунки. Я б очікував, що пакет, який називається, openssl-develзалежить від пакета, який називається openssl. Майте на увазі, що минуло давно, коли я торкнувся yum, тому я не можу перевірити синтаксис команди для вас.
kasperd

Я оновив своє запитання виведенням "yum info openssl". Будь ласка, подивіться, якщо це корисно. Перед тим, як запустити цей потік, я видалив і перевстановив openssl і openssl-devel. Не вийшло! Команди, які я використав: codeyum remove openssl yum
delete

Перевстановлення openssl(а не openssl-devel) повинно стати гарним початком.
Майкл Хемптон

Я вже спробував, що @MichaelHampton Це якась пов'язуюча проблема ???
mayasl

1

Те, що сказав @benedict, працювало на мене. Однак ви можете виявити, що деякі символьні посилання вказують на більш старі версії. Запуск ls -l libcrypto*з / usr / libs покаже вам посилання. Як у наведеному нижче прикладі:

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

Тоді ви хочете спочатку видалити існуюче посилання, ввівши sudo rm libcrypto.soта скопіювавши libcrypto.so.1.1 як зазначено @benedict. Нарешті ви можете створити нове посилання. sudo ln -s libcrypto.so.1.1 libcrypto.so

Сподіваюсь, це допомагає.


1

libcrypto.soНалежить openssl-libsпакет. Якщо ви вручну змусили видалити (з --nodeps) цей пакунок або пошкодили його, оновивши його, ви втратите доступ до yum, wget, curl, ssh тощо. Якщо система має доступ до Інтернету, завантажте за openssl-libsдопомогою команди /usr/bin/GET. Синтаксис виглядатиме нижче, якщо ви намагаєтесь відновити версію 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

Це створить openssl-libs-1.0.2k-8.el7.x86_64.rpmпакет для вас, ви можете використовувати його для повторної установки або вилучення відсутнього .soфайлу.


0

Я пережив саме таку проблему ... Я вирішив це, виконавши наступні команди.

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

Це створить софтпосилання, і вам добре піти.


0

Це найкраще рішення, яке я знайшов навколо ... інші рішення, що надаються в Інтернеті, не переживуть перезавантаження системи;)

ОС: Ubuntu 16.04

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

Прокоментуйте параметри каталогу каталогів і додайте хороший шлях

# libc default configuration

#/usr/local/lib

/usr/lib

Закінчивши редагування, запустіть цю команду:

sudo ldconfig

Тоді у вас буде гарне налаштування під час запуску:

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

Після виправлення я надав:

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)

Для людей, які мають шлях до CentOS, я вважаю, що гарний файл /etc/ld.so.conf;), просто щоб було зрозуміло.
ZEROF

0

На CentOS 7 libssl.so.1.1проживає в /usr/local/ssl/lib.

Тому мені просто довелося додати цей шлях до місцеположень за замовчуванням, де динамічний завантажувач шукає бібліотеки. Я створив окремий файл для мого двійкового файлу openssl, названого openssl-1.1.1c.confв /etc/ld.so.conf.dпапці:

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

Зараз це працює.


-1

Після створення та встановлення відкритого ssl openssl-1.1.0f, я виправив ту саму помилку для lib libssl.so.1.1, створивши м'яке посилання:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.