ошибка при загрузке общих библиотек: 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.
mayasl
источник
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

Я верю, что это решит вашу проблему.

doug.fsu
источник
По крайней мере, в современных дистрибутивах 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

mzhaase
источник
Я тоже попробовал, но не помогло!
Mayasl
@mayasl Может быть, вам нужно переустановить и другие пакеты. Я ожидал бы, что вызываемый пакет openssl-develзависит от названного пакета openssl. Имейте в виду, что прошло много времени с тех пор, как я прикоснулся yum, поэтому я не могу проверить синтаксис команды для вас.
Kasperd
Я обновил свой вопрос выводом "yum info openssl". Пожалуйста, посмотрите, если это полезно. Я удалил и переустановил openssl и openssl-devel перед запуском этой темы. Не сработало! Команды, которые я использовал: codeyum удалить openssl yum удалить openssl-devel yum очистить все
mayasl
Переустановка 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

Прокомментируйте настройки каталога lib и добавьте хороший путь

# 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)
Zerof
источник
Для людей с путем CentOS, я думаю, хорошим файлом является /etc/ld.so.conf;), чтобы было ясно.
НОЛЬ
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

После сборки и установки open 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

Рафаэль
источник