Debian に最新バージョンの OpenSSL を使用するように強制する方法は?

Debian に最新バージョンの OpenSSL を使用するように強制する方法は?

今日私はVirtualBoxに「」(最小パッケージセット)Debian 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)。

おすすめ記事