Ubuntu 22,04: OpenSSL을 3.0.2에서 3.0.7로 업그레이드했는데 'openssl version' 명령이 여전히 라이브러리를 3.0.2로 표시합니다.

Ubuntu 22,04: OpenSSL을 3.0.2에서 3.0.7로 업그레이드했는데 'openssl version' 명령이 여전히 라이브러리를 3.0.2로 표시합니다.

방금 OpenSSL을 3.0.2에서 3.0.7로 수동으로 업그레이드했습니다. 3.0.2에 사용할 수 있는 패치가 있다는 것을 알고 있지만 버전이 여전히 3.0.2라고 표시되는 이유를 계속해서 설명하는 것보다 이런 식으로 관리에 응답하는 것이 더 쉽습니다. 따라서 이에 대해 언급할 필요가 없습니다.

설치 후 다음 명령을 사용할 때 처음에 "BIO_f_zlib 기호를 찾을 수 없습니다" 오류가 발생했습니다.

config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl share zlib

구성을 다음으로 변경합니다.

config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl no-comp

성공했습니다.

이제 설치가 완료되었으므로 다음 명령이 openssl version표시됩니다.

OpenSSL 3.0.72022년 11월 1일(라이브러리: OpenSSL 3.0.22022년 3월 15일)

라이브러리 버전이 바이너리 버전과 일치하도록 설치를 어떻게 수정합니까?
노트:

  • 이름 이 .인 /etc/ld.so.conf.d파일 의 내용을 업데이트했습니다 .openssl-3.0.7.conf/usr/local/ssl/lib
  • 또한 시스템 환경 PATH var를 포함하도록 변경했습니다 /usr/local/ssl/bin.
  • 실행 ldconfig -v하고 source /etc/environment업데이트한 후(기쁨이 없음) 마침내 재부팅했습니다(아직도 기쁨이 없음).

여전히 출력에 불일치가 표시됩니다 openssl version.

다시 연결하라는 제안을 시도했지만 libssl.so.3성공하지 못했습니다. 아래의 환경 정보와 후행 openssl version출력을 참조하세요. /usr/local/ssl 빌드의 구성 옵션을 기반으로 새로운 OpenSSL(3.0.7)을 설치했습니다.

#lsb_release-a
사용 가능한 LSB 모듈이 없습니다.
게시자 ID: 우분투
설명: Ubuntu 22.04.1 LTS
출시 시간: 22.04
코드네임: 제이미

# /usr/local -name 'libssl.so*' 찾기
/usr/local/qualys/cloud-agent/lib/libssl.so.1.1
/usr/local/qualys/cloud-agent/lib/libssl.so
/usr/local/ssl/lib64/libssl.so.3
/usr/local/ssl/lib64/libssl.so
/usr/local/lib64/libssl.so
/usr/local/lib64/libssl.so.3_3.0.2 <== libssl.so.3에서 이름이 변경됨
/usr/local/src/openssl-3.0.7/libssl.so.3
/usr/local/src/openssl-3.0.7/libssl.so

#ls-l/usr/로컬/lib64/libssl.so*
lrwxrwxrwx 1 루트 루트 32 11월 2일 17:07 /usr/local/lib64/libssl.so ->/usr/로컬/ssl/lib64/libssl.so.3
-rwxr-xr-x 1 루트 루트 809464 11월 1일, 15:55 /usr/local/lib64/libssl.so.3_3.0.2

#ls-l/usr/로컬/ssl/lib64/libssl.so*
lrwxrwxrwx 1 루트 루트 11월 1일, 21:23 /usr/local/ssl/lib64/libssl.so -> libssl.so.3
-rwxr-xr-x 1 루트 루트 808704 11월 1일, 21:23 /usr/local/ssl/lib64/libssl.so.3

# openssl 버전 -a
OpenSSL 3.0.72022년 11월 1일(라이브러리: OpenSSL 3.0.22022년 3월 15일)

빌드 시간: 2022년 10월 27일 목요일 17:06:56 UTC

플랫폼: debian-amd64

옵션: bn(64,64)

컴파일러: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-WsPfAX/openssl-3.0.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate -time-D_FORTIFY_SOURCE=2

OPENSSLDIR: "/usr/lib/ssl"

ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-3"

모듈 디렉토리: "/usr/lib/x86_64-linux-gnu/ossl-modules"

시드 소스: 운영 체제별

CPUINFO: OPENSSL_ia32cap=0xfefa32035f8bffff:0x1c2ffb

무엇이 누락되어 있으며 라이브러리를 사용하는 프로세스가 올바른 버전의 라이브러리를 사용하고 있는지 어떻게 확인할 수 있습니까?

답변1

라이브러리가 업데이트되지 않은 것 같습니다. OpenSSL을 업데이트하는 것 외에도 해당 라이브러리(이 경우 libssl)도 업데이트해야 합니다. 가장 좋은 방법은 다음과 같습니다.

apt update
apt upgrade

OpenSSL을 수동으로 업데이트하면 일부 사용이 중단될 수 있습니다. 라이브러리는 시스템의 다른 라이브러리에 맞지 않으므로 위의 두 명령을 사용하는 것이 가장 좋습니다. 귀하의 시스템은 저장소에 있는 OpenSSL보다 최신 버전의 OpenSSL을 지원할 준비가 되어 있지 않을 수 있습니다.

또 다른 방법은 모든 라이브러리를 수동으로 업데이트하는 것입니다. 따라서 OpenSSL을 먼저 수동으로 업데이트한 다음 libssl을 수동으로 업데이트하고 추가로 다른 라이브러리를 수동으로 업데이트하면 됩니다. 그러나 전체 시스템을 최신 버전으로 업그레이드해야 할 수도 있는데 이는 권장되지 않습니다.

답변2

OpenSSL 바이너리가 버전 3.0.7로 올바르게 업그레이드된 것으로 보이지만 라이브러리는 여전히 이전 버전 3.0.2를 가리키고 있습니다. 이 문제를 해결하려면 새 버전을 가리키도록 라이브러리 경로를 업데이트해야 합니다.

먼저 OpenSSL 라이브러리가 어디에 있는지 확인하세요. find 명령 출력에 따르면 다음 위치에 있는 것으로 보입니다./usr/local/ssl/lib64/libssl.so.3.

다음으로, 새 버전을 찾으려면 시스템의 라이브러리 경로를 업데이트해야 합니다. 당신이 추가했습니다/usr/로컬/ssl/lib도착하다/etc/ld.so.conf.d/openssl-3.0.7.conf하지만 실행도 해야 합니다.LD 구성새 경로로 라이브러리 캐시를 업데이트하는 명령:

sudo ldconfig

그러면 새 OpenSSL 라이브러리 경로를 포함하도록 라이브러리 캐시가 업데이트됩니다.

마지막으로 다음 명령을 실행하여 라이브러리 버전이 업데이트되었는지 확인합니다.

ldd $(which openssl)

openssl에서 사용하는 라이브러리 경로가 표시됩니다. 여전히 이전 버전이 표시되면 /usr/local/ssl/bin에 있는 openssl 바이너리 경로를 사용하여 ldd를 실행해 보세요.

라이브러리 경로가 업데이트된 경우 openssl 버전을 실행하면 이제 올바른 버전의 바이너리 및 라이브러리가 표시됩니다.

openssl version -a

이게 도움이 되길 바란다!

답변3

이는 prefix=/usr/local/sslUbuntu 22의 기본 OpenSSL isstalaltion 접두사가 아닙니다. 이제 새 버전 /usr/local/ssl과 기본 버전이 있습니다. 다음 옵션을 사용하여 빌드해 볼 수 있습니다.

export CONFARGS  = --prefix=/usr --openssldir=/usr/lib/ssl --libdir=lib/x86_64-linux-gnu no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms no-capieng
    
./Configure shared $(CONFARGS)  linux-x86_64  && perl configdata.pm -d
make -j4 
make install 

패키지를 생성 .deb하고 설치하기 전에 테스트해 보세요.

관련 정보