/usr/local/lib에는 우선순위가 없습니다.

/usr/local/lib에는 우선순위가 없습니다.

이 기사에서는 SSH를 사용하여 시스템에 로그인하는 대신 포트 443 웹 트래픽을 보호하기 위해 최신 OpenSSL 패치를 적용하는 방법에 대해 설명합니다.

openssl-1.0.1g.tar.gz최신 OpenSSL 타르볼 소스 패치를 받으러 갔습니다.여기CentOS 6.5를 실행하는 Linux 워크스테이션의 경우 다음을 포함하는 패치를 빌드했습니다.

./config; make; make test; make install # as root

이는 에 설치됩니다 /usr/local/ssl.

프로덕션 시스템에 패치를 적용하기 전에 패치를 사용할 수 있는지 안전한 장소에서 증명하고 싶습니다. 그러나 모든 것을 실행한 후에는 당황스럽습니다. 이것

./config, make, make test, and make install

오류 없이 단계가 완료되었습니다.

최신 OpenSSL이 설치되어 있는지 확인하는 방법은 무엇입니까?

다양한 답변을 바탕으로 버전을 테스트한 결과는 다음과 같습니다.

openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Tue Apr  8 02:33:43 UTC 2014
platform: linux-elf

답변1

머리말:질문에서 볼 수 있듯이 openssl은 기본적 으로 /usr/local/ssl. 이렇게 하지 않으면 거기에 파일을 추가하고 ( 파일 의 의미는 아래 참조 ) ../config --prefix=/usr/local sharedlibssl/etc/ld.so.conf.d/usr/local/ssl/lib/etc/ld.so.conf.d/usr/local/bin$PATH


링커 캐시에 라이브러리를 추가하려면 ldconfig이후에 실행해야 합니다 . make install그래도 작동하지 않으면 계속 읽으십시오.

make install/usr/local아마도 기본적으로 다음 위치 로 이동합니다 .~해야 한다우선순위이지만 우선순위가 아닐 수도 있습니다. 따라서 패키지 관리자 및 필수 구성 요소를 방해하지 않기 위해 배포판의 openssl 설치를 유지할 수 있지만 여전히 자체 로컬 빌드를 기본값으로 사용할 수 있습니다. 가서 확인해 보세요:

ldd $(which ssh) | grep libssl

출력이 없으면 ssh링크가 정적으로 링크되어 있으므로 다시 작성해야 합니다(Anton의 답변 참조). 그렇지 않은 경우 이는 귀하의 버전을 가리켜야 합니다 /usr/local. 다른 것을 가리키는 경우:

ldconfig -p | grep libssl

버전은 /usr/local다른 버전 뒤에 표시되어야 합니다. 그렇다면 아래의 "/usr/local/lib에 우선 순위가 없습니다"로 건너뛰십시오. 그렇지 않은 경우 /usr/local일반적으로 링커 경로에 있는지 확인하세요 .

ldconfig -p | grep "/usr/local"

그렇지 않다면 grep -r "/usr/local" /etc/ld.so.conf.d. 존재하지 않는 경우 /etc/ld.so.conf.d한 줄로 호출할 파일을 추가합니다.00-local.conf

/usr/local/lib

ldconfig(스위치 없이) 실행 하고 이 작업을 다시 수행합니다.


/usr/local/lib에는 우선순위가 없습니다.

다음 경로를 추가하는 링커 캐시 구성 파일을 찾습니다.

grep -r "/usr/local" /etc/ld.so.conf.d

파일이 없으면 위에서 설명한 대로 파일을 추가해야 합니다. 그렇다면 문제는 파일이 사전순으로 처리된다는 것입니다. 예를 들어 콘텐츠가 /etc/ld.so.conf.d다음과 같은 경우:

addtheselibraries.conf
libc.conf

libc.conf포함 하지만 /usr/local/lib포함합니다 addtheselibraries.conf(예 : 1 )/usr/lib . 후자가 우선합니다. 파일에 다른 내용이 포함되어 있지 않으면 다른 파일을 대체할 이름으로 이름을 바꾸면 됩니다. 그러면 괜찮습니다./usr/local/lib000-whatever

완벽하게 제어할 수 있기 때문입니다 /usr/local/lib.~해야 한다배포판의 패키지 관리자가 사용하는 모든 경로 앞에 옵니다(일반적으로).

1. /usr/lib는 기본적으로 링커로 컴파일되지만 이 위치와 기타 표준 시스템 위치(/lib 등)가 추가됩니다.마지막, 이를 통해 교체할 수 있습니다. 따라서 때로는 (예를 들어) /usr/lib.conf 파일에 추가되어 다른 .conf 파일을 대체합니다.

답변2

openssl version -a

위 명령은 시스템의 openssl 버전을 제공합니다. 첫 번째 줄의 날짜 대신 빌드 날짜를 확인하세요.

답변3

소스 코드(소스 트리의 openssl 소스 코드 포함)를 다운로드하고 ./config; make; make install실행하여 openssh를 다시 컴파일해야 합니다 openssh.

openssh 컴파일에 대한 자세한 지침은 다음에서 찾을 수 있습니다.설치 문서

관련 정보