OpenSSLを手動で3.0.2から3.0.7にアップグレードしました。 3.0.2で利用可能なパッチがあることはわかっていますが、バージョンがまだ3.0.2と表示されている理由を引き続き説明するよりも、この方法で管理に応答する方が簡単です。したがって、これについて言及する必要はありません。
インストール後に次のコマンドを使用すると、最初に「BIO_f_zlibシンボルが見つかりません」というエラーが発生しました。
config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl share zlib
設定を次に変更します。
config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl no-comp
成功しました。
これでインストールが完了したので、次のコマンドがopenssl version
表示されます。
OpenSSL 3.0.72022年11月1日(ライブラリ:OpenSSL 3.0.22022年3月15日)
ライブラリのバージョンがバイナリのバージョンと一致するようにインストールを変更するにはどうすればよいですか?
メモ:
-
名前が..
/etc/ld.so.conf.d
のファイルの内容を更新しました。openssl-3.0.7.conf
/usr/local/ssl/lib
- また、システム環境PATH varを含めるように変更しました
/usr/local/ssl/bin
。 - 実行し
ldconfig -v
てsource /etc/environment
更新した後(喜びなし)ついに再起動しました(まだ喜びなし)。
それでも出力に不一致が表示されますopenssl version
。
再接続するよう提案してみましたが、libssl.so.3
成功しませんでした。以下の環境情報と後続のopenssl version
出力を参照してください。/usr/local/ssl
ビルドの設定オプションに基づいて新しいOpenSSL(3.0.7)をインストールしました。
#lsb_release-a 利用可能なLSBモジュールはありません。 出版社ID:Ubuntu 説明: Ubuntu 22.04.1 LTS リリース時間: 22.04 コードネーム:ジェイミー # /usr/local -name 'libssl.so*' 検索 /usr/local/qualys/cloud-agent/lib/libssl.so.1.1 /usr/local/qualys/cloud-agent/lib/libssl.so /usr/local/ssl/lib64/libssl.so.3 /usr/local/ssl/lib64/libssl.so /usr/local/lib64/libssl.so /usr/local/lib64/libssl.so.3_3.0.2 <== libssl.so.3で名前が変更されました /usr/local/src/openssl-3.0.7/libssl.so.3 /usr/local/src/openssl-3.0.7/libssl.so #ls-l/usr/ローカル/lib64/libssl.so* lrwxrwxrwx 1ルートルート32 11月2日17:07 /usr/local/lib64/libssl.so ->/usr/ローカル/ssl/lib64/libssl.so.3 -rwxr-xr-x 1 root root 809464 11月1日、15:55 /usr/local/lib64/libssl.so.3_3.0.2 #ls-l/usr/ローカル/ssl/lib64/libssl.so* lrwxrwxrwx 1ルートルート11月1日、21:23 /usr/local/ssl/lib64/libssl.so -> libssl.so.3 -rwxr-xr-x 1 root root 808704 11月1日、21:23 /usr/local/ssl/lib64/libssl.so.3 #openssl バージョン -a OpenSSL 3.0.72022年11月1日(ライブラリ:OpenSSL 3.0.22022年3月15日) ビルド時間:2022年10月27日木曜日17:06:56 UTC プラットフォーム: debian-amd64 オプション: bn(64,64) コンパイラ: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-WsPfAX/openssl-3.0.2=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENS te -time-D_FORTIFY_SOURCE=2 OPENSSLDIR: "/usr/lib/ssl" ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-3" モジュールディレクトリ: "/usr/lib/x86_64-linux-gnu/ossl-modules" シードソース:オペレーティングシステム固有 CPUINFO: OPENSSL_ia32cap=0xfefa32035f8bffff:0x1c2ffb
何が欠けており、ライブラリを使用しているプロセスが正しいバージョンのライブラリを使用しているかをどうやって確認できますか?
答え1
ライブラリが更新されていないようです。 OpenSSLの更新に加えて、そのライブラリ(この場合はlibssl)も更新する必要があります。最良の方法は次のとおりです。
apt update
apt upgrade
OpenSSLを手動で更新すると、一部の使用が中断される可能性があります。ライブラリはシステム内の他のライブラリと一致しないため、上記の2つのコマンドを使用するのが最善です。お使いのシステムは、リポジトリのOpenSSLよりも最新のOpenSSLをサポートする準備ができていない可能性があります。
別の方法は、すべてのライブラリを手動で更新することです。したがって、OpenSSLを最初に手動で更新してからlibsslを手動で更新し、さらに他のライブラリを手動で更新するだけです。ただし、システム全体を最新バージョンにアップグレードする必要があるかもしれませんが、これはお勧めできません。
答え2
OpenSSLバイナリはバージョン3.0.7に正しくアップグレードされているようですが、ライブラリはまだ以前のバージョン3.0.2を指しています。この問題を解決するには、新しいバージョンを指すようにライブラリパスを更新する必要があります。
まず、OpenSSLライブラリがどこにあるかを確認してください。 findコマンドの出力によると、次の位置にあるようです。/usr/local/ssl/lib64/libssl.so.3。
次に、新しいバージョンを見つけるには、システムのライブラリパスを更新する必要があります。あなたが追加しました/usr/ローカル/ssl/lib到着/etc/ld.so.conf.d/openssl-3.0.7.confしかし、実行もしなければなりません。LD構成新しいパスでライブラリキャッシュを更新するコマンド:
sudo ldconfig
これにより、新しいOpenSSLライブラリパスを含めるようにライブラリキャッシュが更新されます。
最後に、次のコマンドを実行してライブラリのバージョンが更新されたことを確認します。
ldd $(which openssl)
openssl が使用するライブラリパスが表示されます。それでも以前のバージョンが表示されている場合は、/usr/local/ssl/binにあるopensslバイナリパスを使用してlddを実行してみてください。
ライブラリパスが更新されている場合は、opensslバージョンを実行すると正しいバージョンのバイナリとライブラリが表示されます。
openssl version -a
これが役立つことを願っています!
答え3
これはprefix=/usr/local/ssl
Ubuntu 22のデフォルトのOpenSSL isstalaltionプレフィックスではありません。これで新しいバージョン/usr/local/ssl
と基本バージョンがあります。次のオプションを使用してビルドしてみることができます。
export CONFARGS = --prefix=/usr --openssldir=/usr/lib/ssl --libdir=lib/x86_64-linux-gnu no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms no-capieng
./Configure shared $(CONFARGS) linux-x86_64 && perl configdata.pm -d
make -j4
make install
パッケージを作成して.deb
インストールする前にテストしてください。