데비안이 최신 버전의 OpenSSL을 사용하도록 강제하는 방법은 무엇입니까?

데비안이 최신 버전의 OpenSSL을 사용하도록 강제하는 방법은 무엇입니까?

오늘 저는 VirtualBox에 ''(최소 패키지 세트) 데비안 8.1을 설치했습니다. 소스 코드에서 애플리케이션을 컴파일해 보고 싶습니다.

저는 OpenSSL로 시작했습니다: OpenSSL 1.0.1p 소스 코드에서 컴파일되었습니다.

user@debian8:/$ /opt/openssl/bin/openssl version
OpenSSL 1.0.1p 9 Jul 2015
user@debian8:/$ ldd /opt/openssl/bin/openssl
        linux-gate.so.1 (0xb76ed000)
        libssl.so.1.0.0 => /opt/openssl/lib/libssl.so.1.0.0 (0xb767c000)
        libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0xb748a000)
        libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb747f000)
        libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb72d5000)
        /lib/ld-linux.so.2 (0xb76f0000)

다음은 OpenSSH입니다. 제가 직면한 첫 번째 문제는 ./configureOpenSSL 헤더 버전(1.0.1p)이 OpenSSL 라이브러리 버전(1.0.1k)과 일치하지 않는다는 불만이었습니다. aptOpenSSL 1.0.1k 라이브러리만 설치된 것으로 나타났습니다 . 그래서 나는 이렇게 했습니다:

LD_LIBRARY_PATH=/opt/openssl/lib ./configure (..params...) --with-ssl-dir=/opt/openssl/lib
LD_LIBRARY_PATH=/opt/openssl/lib make
sudo make install

이것은 효과가 있었습니다.

그러나: (OpenSSL 1.0.1k 및 버전의 경로를 참고하세요 libcrypto.so)

user@debian8:/opt/openssh/bin$ ./ssh -V
OpenSSH_7.0p1, OpenSSL 1.0.1k 8 Jan 2015
user@debian8:/opt/openssh/bin$ ldd ssh
        linux-gate.so.1 (0xb770b000)
        libresolv.so.2 => /lib/i386-linux-gnu/i686/cmov/libresolv.so.2 (0xb761d000)
        libcrypto.so.1.0.0 => /usr/lib/i386-linux-gnu/i686/cmov/libcrypto.so.1.0.0 (0xb7451000)
        libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb744b000)
        libutil.so.1 => /lib/i386-linux-gnu/i686/cmov/libutil.so.1 (0xb7447000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb742a000)
        libnsl.so.1 => /lib/i386-linux-gnu/i686/cmov/libnsl.so.1 (0xb7411000)
        libcrypt.so.1 => /lib/i386-linux-gnu/i686/cmov/libcrypt.so.1 (0xb73e0000)
        libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb7235000)
        /lib/ld-linux.so.2 (0xb770e000)

다시 LD_LIBRARY_PATH도움말을 추가하세요.

user@debian8:/opt/openssh/bin$ LD_LIBRARY_PATH=/opt/openssl/lib ./ssh -V
OpenSSH_7.0p1, OpenSSL 1.0.1p 9 Jul 2015
user@debian8:/opt/openssh/bin$ LD_LIBRARY_PATH=/opt/openssl/lib ldd ssh
        linux-gate.so.1 (0xb776f000)
        libresolv.so.2 => /lib/i386-linux-gnu/i686/cmov/libresolv.so.2 (0xb7681000)
        libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0xb748f000)
        libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb7489000)
        libutil.so.1 => /lib/i386-linux-gnu/i686/cmov/libutil.so.1 (0xb7485000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7468000)
        libnsl.so.1 => /lib/i386-linux-gnu/i686/cmov/libnsl.so.1 (0xb744f000)
        libcrypt.so.1 => /lib/i386-linux-gnu/i686/cmov/libcrypt.so.1 (0xb741e000)
        libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb7273000)
        /lib/ld-linux.so.2 (0xb7772000)

나는 sshd그것이 작동하는지 확실히 테스트했습니다. 22에서 수신 대기하고 PuTTY에 연결할 수 있습니다.

이제 내 질문은 다음과 같습니다.

  1. 내가 뭔가 잘못한 게 아닐까?
  2. LD_LIBRARY_PATH를 추가하지 않고 OpenSSH를 통해 OpenSSL 버전 1.0.1p를 강제 실행하는 방법(을 사용해 보았지만 /etc/ld.so.conf.d/아무것도 작동하지 않았습니다. ldconfig참조 , 그러나 1.0.1p를 생성 하거나 사용 /opt/openssl/lib하지 않습니다 ).sshsshd
  3. ing 없이 올바른 경로를 openssl사용하는 이유는 무엇입니까 ?ldd opensslLD_LIBRARY_PATH

답변1

man ld.so동적 링커에 대한 설명서를 참조하세요 . 자신이 컴파일한 OpenSSL에 우선순위를 부여 하려면 이를 /usr/local/lib. /etc/ld.so.conf.d노력하다

LD_DEBUG=libs /lib64/ld-linux-x86-64.so.2 --list /usr/bin/ssh

통찰력을 얻으세요. 자체 컴파일된 바이너리의 경우 RPATH 설정이 자체 라이브러리를 찾는 데 도움이 될 수 있습니다.

objdump -x /opt/openssl/bin/openssl | grep RPATH

(에서 가져옴https://stackoverflow.com/questions/2836330/is-there-a-way-to-inspect-the-current-rpath-on-linux).

관련 정보