błąd podczas ładowania bibliotek współdzielonych: libcrypto.so.1.1


13

Kiedy uruchamiam „openssl”, pojawia się błąd jak poniżej:

openssl: błąd podczas ładowania bibliotek współdzielonych: libcrypto.so.1.1: nie można otworzyć pliku obiektu współdzielonego: brak takiego pliku lub katalogu ”

Stało się to po próbie aktualizacji OpenSSL zgodnie z tym artykułem

Czy można to naprawić?

System operacyjny: CentOS 6.8 Serwer WWW: nginx / 1.10.2

Aktualizacja nr 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
Przepraszamy, natrafiłeś na kolejny zły samouczek internetowy. Może być konieczna ponowna instalacja systemu. Zanim przejdziemy dalej, sugeruję, aby zapytać o oryginalny problem, który próbujesz rozwiązać, robiąc to. Prawdopodobnie jest lepszy sposób na osiągnięcie pierwotnego celu.
Michael Hampton

Chciałem zainstalować aplikację Monitor serwera dostarczoną przez Monitis. Potrzebował zależności biblioteki współdzielonej, które nie zostały zainstalowane na moim serwerze. Wszystko to wydarzyło się, gdy trzeba było je zainstalować. :(
majasl

@MichaelHampton Powiedz mi coś oprócz ponownej instalacji systemu. Ponieważ na tym serwerze działa witryna na żywo!
majasl

Odpowiedzi:


20

Miałem ten sam problem po zainstalowaniu ostatniej wersji openssl 1.1.0c, że problem został rozwiązany kopiowanie plików bibliotecznych libcrypto.so.1.1, libcrypto.aa libssl.sood /usr/local/lib64do biblioteki zakładowego /usr/lib64.
Po skopiowaniu bibliotek musisz utworzyć dowiązanie symboliczne.

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

Po utworzeniu dowiązania symbolicznego wymagana była również pamięć podręczna ldconfig :

sudo ldconfig

8

W twojej oryginalnej wersji OpenSSL wiedział, jak znaleźć współdzielone biblioteki, ponieważ /usr/lib64jest zawarty w ścieżce wyszukiwania linkera. Kiedy pobrałeś i skompilowałeś „lokalną” kopię OpenSSL, współdzielone biblioteki lib były /usr/local/lib64domyślnie umieszczone . Prawdopodobnie musisz po prostu dodać ten katalog do ścieżki wyszukiwania linkera, tak jak ten (jako root):

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

następnie wykonaj:

ldconfig

Wierzę, że to rozwiąże problem.


W przynajmniej współczesnych dystrybucjach Ubuntu (piszę to 16.04 LTS) i prawdopodobnie w innych, sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.confspowoduje błąd „odmowa uprawnień”, ponieważ druga połowa polecenia (zapis pliku) nie jest wykonywana jako root. Jeśli tak się stanie, spróbuj sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"zamiast tego.
Matthew Cole

3

Ten błąd wystąpił podczas używania Termuxa w systemie ChromeOS, co spowodowało awarię programów npmi nodewiersza poleceń.

Uruchomienie pkg upgraderozwiązało problem!


1

Możesz go ponownie zainstalować za pomocą

yum install -y openssl-devel


Próbowałem też, ale nie pomogłem!
majasl

@mayasl Być może trzeba również zainstalować ponownie inne pakiety. Spodziewałbym się, że wywołany pakiet openssl-develbędzie zależał od pakietu o nazwie openssl. Pamiętaj, że minęło dużo czasu, odkąd go dotknąłem yum, więc nie mogę zweryfikować dla ciebie składni polecenia.
kasperd

Zaktualizowałem moje pytanie o wynik „yum info openssl”. Proszę spojrzeć, jeśli jest to przydatne. Przed rozpoczęciem tego wątku usunąłem i ponownie zainstalowałem openssl i openssl-devel. Nie działał! Polecenia użyłem: codeyum remove openssl yum remove openssl-devel yum oczyścić wszystkie
mayasl

Ponowna instalacja openssl(i nie openssl-devel) powinna być dobrym początkiem.
Michael Hampton

Już próbowałem @MichaelHampton Czy to jest jakiś problem z łączeniem ???
maja

1

To, co powiedział @benedict, działało dla mnie. Jednak może się okazać, że niektóre dowiązania symboliczne wskazują starsze wersje. Uruchomienie ls -l libcrypto*z / usr / libs pokaże linki. Jak w poniższym przykładzie:

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

Następnie chciałbyś najpierw usunąć istniejące łącze, wpisując, sudo rm libcrypto.soa następnie kopiując libcrypto.so.1.1, jak wspomniano w @benedict. Wreszcie możesz utworzyć nowy link. sudo ln -s libcrypto.so.1.1 libcrypto.so

Mam nadzieję że to pomoże.


1

libcrypto.soNależy do openssl-libsspakowania. Jeśli ręcznie wymusisz usunięcie (z --nodeps) tego pakietu lub uszkodzenie go przez uaktualnienie, utracisz dostęp do yum, wget, curl, ssh itp. Jeśli system ma dostęp do Internetu, pobierz polecenie openssl-libsza pomocą /usr/bin/GET. Jeśli próbujesz przywrócić wersję, składnia wygląda następująco 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

Spowoduje to utworzenie openssl-libs-1.0.2k-8.el7.x86_64.rpmpakietu, którego możesz użyć do ponownej instalacji lub wypakowania brakującego .sopliku.


0

Przeszedłem dokładnie ten sam problem ... Rozwiązałem go, uruchamiając następujące polecenia.

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

Spowoduje to utworzenie softlink i możesz zacząć.


0

To najlepsze rozwiązanie, jakie znalazłem ... inne rozwiązania dostępne w Internecie nie przetrwają ponownego uruchomienia systemu;)

System operacyjny: Ubuntu 16.04

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

Skomentuj ustawienia katalogu lib i dodaj dobrą ścieżkę

# libc default configuration

#/usr/local/lib

/usr/lib

Po zakończeniu edycji uruchom to polecenie:

sudo ldconfig

Wtedy będziesz mieć dobre ustawienie, gdy uruchomisz:

ldd / usr / bin / openssl

Przed tą poprawką:

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

Po poprawce podałem:

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)

Dla osób ze ścieżką CentOS uważam, że dobrym plikiem jest /etc/ld.so.conf;), dla jasności.
ZEROF

0

Na CentOS 7 libssl.so.1.1znajduje się w /usr/local/ssl/lib.

Musiałem więc tylko dodać tę ścieżkę do domyślnych lokalizacji, w których dynamiczny moduł ładujący szuka bibliotek. Utworzyłem osobny plik dla mojego pliku binarnego openssl o nazwie openssl-1.1.1c.confw /etc/ld.so.conf.dfolderze:

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

Teraz działa.


-1

Po zbudowaniu i zainstalowaniu open ssl openssl-1.1.0f naprawiłem ten sam błąd dla lib libssl.so.1.1 tworząc miękkie łącze:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.