OpenSSLが error while loading shared libraries libssl.so.1.1

提供: セキュリティ
移動: 案内検索
スポンサーリンク

OpenSSL が ./apps/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory とエラーを出すので解決した話をまとめます。

読み方

OpenSSL
おーぷん えすえすえる

概要

前提ですが、 Windows の WSL の Ubuntu の環境で、 github から取得した OpenSSL コマンドをソースコードからビルドしたときに、下記のエラーに遭遇しました。ビルドしただけで、インストールもしていません。

./apps/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

なぜエラーが出るのか

プログラムを実行するときに、サーチパスから シェアードオブジェクトを検索します。 自分でビルドした OpenSSL を ldd で調べてみると libssl.so.1.1 を要求していることがわかりますが、 not found になってます。

ldd ./apps/openssl
        linux-vdso.so.1 =>  (0x00007fffc089b000)
        libssl.so.1.1 => not found
        libcrypto.so.1.1 => not found
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4da6640000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4da6260000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f4da6a00000)

libssl.so.1.1 はそもそも存在するのか?

github からもってきたソースコードをビルドしたディレクトリに libssl.so.1.1 はありました。

$ find . -name 'libssl.so.1.1'
./libssl.so.1.1

つまり、自分でビルドした openssl コマンドに必要な libssl.so も一緒にビルドされていたということです。 自分でビルドした openssl や libssl.so はインストールしていないので、一般的なサーチパスの場所には入っていないので、 libsso.so がない (not found) と言われるのも、もっともだ、ということです。

対応方法

対応方法は、いくつかあると思います。

  • 自分でビルドした openssl をインストールする
  • LD_LIBRARY_PATH を指定して、openssl コマンドに、libsso.so のある場所を教えてあげる
  • ldconfig に自分の libsso.so の場所を指定してしまう

環境に変更なく、テスト的な意味でやりたいのであれば、 LD_LIBRARY_PATH を指定するのが一番簡単な方法でしょう。

$ echo hoge | env LD_LIBRARY_PATH=. ./apps/openssl md5
(stdin)= c59548c3c576228486a1f0037eb16a1b

関連項目




スポンサーリンク