공유 라이브러리를로드하는 동안 오류가 발생했습니다 : 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
죄송합니다, 또 다른 나쁜 인터넷 튜토리얼을 경험하셨습니다. 시스템을 다시 설치해야 할 수도 있습니다. 계속 진행하기 전에이 작업을 통해 해결하려는 원래 문제에 대해 문의하는 것이 좋습니다. 원래 목표를 달성하는 더 좋은 방법이있을 것입니다.
Michael Hampton

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기본적으로 공유 라이브러리가 배치되었습니다 . 따라서이 디렉토리를 링커의 검색 경로에 다음과 같이 추가해야합니다 (루트).

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

그런 다음 실행하십시오.

ldconfig

문제가 해결 될 것으로 생각합니다.


적어도 현대 우분투 배포판 (16.04 LTS에 이것을 쓰고 있습니다)과 아마도 다른 것에서 sudo echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl.conf는 명령의 후반 (파일 쓰기)이 루트로 실행되지 않기 때문에 "권한 거부"오류가 발생합니다. 이 경우 sudo sh -c "echo '/usr/local/lib64' >> /etc/ld.so.conf.d/openssl.conf"대신 시도하십시오 .
Matthew Cole

3

ChromeOS에서 Termux를 사용 하여이 오류가 발생하여 npmnode명령 줄 프로그램이 중단되었습니다.

실행 pkg upgrade하면 문제가 해결되었습니다!


1

다음을 사용하여 다시 설치할 수 있습니다

yum install -y openssl-devel


나는 그것을 시도했지만 도움이되지 않았다!
mayasl

@mayasl 다른 패키지도 다시 설치해야 할 수도 있습니다. 라는 패키지는이라는 패키지 openssl-devel에 의존 할 것으로 예상 openssl됩니다. 을 터치 한 이후 오랜 시간이 걸렸 yum으므로 명령 구문을 확인할 수 없습니다.
kasperd

"yum info openssl"의 출력으로 내 질문을 업데이트했습니다. 유용한 경우 살펴보십시오. 이 스레드를 시작하기 전에 openssl 및 openssl-devel을 제거하고 다시 설치했습니다. 작동하지 않았다! 내가 사용한 명령 : codeyum remove
opensslsl

재설치 openssl, (그리고 것은 openssl-devel) 좋은 시작해야한다.
Michael Hampton

나는 이미 @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@benedict에서 언급 한대로 libcrypto.so.1.1을 입력 한 다음 복사 하여 기존 링크를 먼저 제거하려고합니다 . 마지막으로 새 링크를 만들 수 있습니다. 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)

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.