저는 데비안(Stretch)을 사용하고 있습니다. 여기로 돌아오세요 openssl version
:
OpenSSL1.1.0f 2017년 5월 25일(도서관:OpenSSL 1.1.0-pre6-dev xxxxxxxxx)
OpenSSL용 "라이브러리"를 업데이트하는 방법(1.1.0-pre6-dev) 최신 버전으로 업데이트하는
apt-get install openssl
것이 도움이 되지 않는 것 같나요?다른 서버에서는
openssl version
"OpenSSL 1.1.0g 2 Nov 2017(라이브러리: OpenSSL 1.1.0f 2017년 5월 25일)"이 반환됩니다. 사용된 버전 라이브러리가 설치된 패키지와 다를 수 있는 방법은 무엇입니까?
업데이트 1
apt-cache policy openssl libssl1.1
출력은 다음과 같습니다
개방형 SSL:
Installed: 1.1.0f-3+deb9u1
Candidate: 1.1.0f-3+deb9u1
Version table:
1.1.0f-3+deb9u1 500
500 http://security.debian.org/debian-security stretch/updates/main amd64 Packages
100 /var/lib/dpkg/status
1.1.0f-3 500
500 http://debian.mirrors.ovh.net/debian stretch/main amd64 Packages
libssl1.1:
Installed: 1.1.0f-5
Candidate: 1.1.0f-5
Version table:
1.1.0f-5 100
100 /var/lib/dpkg/status
1.1.0f-3+deb9u1 500
500 http://security.debian.org/debian-security stretch/updates/main amd64
Packages
1.1.0f-3 500
500 http://debian.mirrors.ovh.net/debian stretch/main amd64 Packages
업데이트 2
openssl에는 두 가지 버전이 설치된 것으로 보입니다.
usr/local/ssl/bin/openssl version
2016년 5월 3일 OpenSSL 1.0.2h로 돌아가기
usr/bin/openssl version
2017년 5월 25일 OpenSSL 1.1.0f로 돌아가기(라이브러리: OpenSSL 1.1.0-pre6-dev xx XXX xxxx)
which openssl
/usr/bin/openssl로 돌아가기
ldd $(which openssl)
반품
linux-vdso.so.1 (0x00007fff3b074000)
libssl.so.1.1 => /usr/local/lib/libssl.so.1.1 (0x00007f4ec0de0000)
libcrypto.so.1.1 => /usr/local/lib/libcrypto.so.1.1 (0x00007f4ec095b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4ec0757000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4ec053a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4ec019b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4ec12f9000)
답변1
먼저 로컬에 설치된 라이브러리와 바이너리( libcrypto
etc. libssl
및 바이너리 openssl
)를 제거해야 합니다. 이렇게 하면 패키지 버전, 즉 보안 지원을 받는 버전을 사용할 수 있습니다.
지금의 당신을 얻으려면진짜뒤쪽에,즉Nginx에는 HTTP2와 TLS가 있으므로 다음을 사용하는 것이 좋습니다.백포트된 패키지직접 구축하는 대신 이 버전에는 귀하가 찾고 있는 기능이 포함되어 있습니다. 이렇게 하려면 (루트로) 실행하세요.
echo deb http://http.debian.net/debian stretch-backports main > /etc/apt/sources.list.d/stretch-backports.list
apt update
apt install -t stretch-backports nginx
답변2
데비안 스트레치현재 안정 버전입니다(2017년 11월 기준). 이것보안팀릴리스된 코드 버전에 대한 보안 수정 사항을 백포트하므로 새로운 기능을 얻지 못하더라도 SSL 라이브러리가 최신 상태라는 것을 합리적으로 확신할 수 있습니다.
어떤 관련 패키지가 설치되어 있거나 설치될 수 있는지
dpkg -l '*openssl*'
저장소에서 사용할 수 있는 설치된 패키지 버전
dpkg -l '*openssl*' | awk '/^i/{print $2}' | xargs apt-show-versions -a
모든 것이 최신 상태인지 확인하세요.
apt-get update
apt-get upgrade
특정 패키지에 대해 변경 사항 파일을 읽어 어떤 패치가 적용되었는지 확인할 수 있습니다 /usr/share/doc/{package_name}/changelog.Debian.gz
. 예를 들어,
zless /usr/share/doc/openssl/changelog.Debian.gz
답변3
일부 Linux 배포판을 사용하고 있는 것 같습니다. 이는 패키지 업데이트가 배포판 관리자에 따라 달라지며 해당 관리자가 배포판 저장소에 새 버전을 푸시할 때만 얻을 수 있음을 의미합니다. 배포판의 새 버전).
물론 따라갈 수 있습니다.이것수동으로(Ubuntu/Debian/Mint를 사용하는 경우) OpenSSL의 새 버전을 빌드한 다음 dpkg를 사용하여 설치합니다. 그러나 이렇게 하면 설치된 애플리케이션이 SSL 연결 사용을 중지하거나 작동을 멈추는 등 심각한 결과를 초래할 수 있습니다.
사용할 새 버전의 OpenSSL이 필요한 경우 소스에서 컴파일하여 /usr/local에 설치하면 시스템 전체 패키지를 방해하지 않습니다. 그것은 종종 달리기만큼 간단합니다
./configure && make && make install
그러나 요즘에는 CMake 및 기타 빌드 체인이 존재하므로 이것이 항상 그렇게 간단한 것은 아닙니다. 그럼에도 불구하고 많은 Linux 애플리케이션에는 빌드 방법에 대한 매뉴얼이 함께 제공됩니다.