libssl.so.1.1 共有オブジェクトファイルが見つからない問題の解決
Ubuntu 22.04 LTS にアップデートした後、OpenSSL を使用するアプリケーションが動作しなくなる問題が発生することがあります。これは Ubuntu 22.04 が OpenSSL 3.0 にアップグレードされたため、古いバージョンの OpenSSL 1.1 ライブラリがなくなったことが原因です。
問題の原因
Ubuntu 22.04 (Jammy Jellyfish) では、OpenSSL がバージョン 1.1.x から 3.0.x にアップグレードされました。これにより、libssl.so.1.1
や libcrypto.so.1.1
といった共有ライブラリがシステムから削除されました。しかし、多くのアプリケーション(Python 環境、Node.js、その他のツール)は依然としてこれらの古いバージョンのライブラリに依存しているため、次のようなエラーが発生します:
ImportError: libssl.so.1.1: cannot open shared object file: No such file or directory
解決方法
方法 1: libssl1.1 パッケージのインストール(推奨)
最も簡単で安全な解決方法は、Ubuntu の公式リポジトリから libssl1.1 パッケージをインストールすることです。
# 最新の libssl1.1 パッケージをインストール
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb
WARNING
ダウンロードリンクは時間の経過とともに変更される可能性があります。最新のパッケージは Ubuntu パッケージリポジトリで確認してください。
方法 2: ソースから OpenSSL 1.1 をビルドする
システム全体のライブラリを変更したくない場合、ユーザー空間に OpenSSL 1.1 をインストールする方法もあります。
# 作業ディレクトリの作成
mkdir -p ~/opt/openssl1.1
cd ~/opt/openssl1.1
# OpenSSL 1.1 のダウンロードとビルド
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
# ビルドとインストール
./config --prefix="$HOME/opt/openssl1.1" --openssldir="$HOME/opt/openssl1.1/ssl"
make
make test
make install
# ライブラリパスの設定
echo 'export LD_LIBRARY_PATH="$HOME/opt/openssl1.1/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc
source ~/.bashrc
方法 3: Python 環境の再インストール
pyenv やその他のバージョン管理ツールを使用している場合、Python の再インストールで問題が解決することがあります。
# pyenv を使用している場合
pyenv uninstall 3.9.10
pyenv install 3.9.12
pyenv global 3.9.12
# poetry の再インストール
curl -sSL https://install.python-poetry.org | python3 -
方法 4: リポジトリを追加してインストール
Ubuntu 20.04 (Focal) のリポジトリから libssl1.1 をインストールすることもできます。
# Focal リポジトリの追加
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
# パッケージの更新とインストール
sudo apt-get update
sudo apt-get install libssl1.1
重要な注意点
OpenSSL 1.1 のサポート終了について
OpenSSL 1.1 シリーズは 2023年9月11日にサポートが終了しています。セキュリティ更新が提供されなくなるため、長期的にはアプリケーションを OpenSSL 3.0 に対応させることを検討してください。
開発者向けアドバイス
- 新しいプロジェクトでは OpenSSL 3.0 互換のライブラリを使用する
- 既存のアプリケーションは OpenSSL 3.0 対応にアップデートする
- コンテナ環境を使用する場合は、ベースイメージを適切に選択する
トラブルシューティング
インストール後も問題が解決しない場合は、以下のコマンドでライブラリの存在を確認してください。
# ライブラリの存在確認
ls -la /usr/lib/x86_64-linux-gnu/libssl.so.1.1
ls -la /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
# ライブラリパスの確認
echo $LD_LIBRARY_PATH
# 動的リンクの確認(例: Python)
ldd $(which python3) | grep ssl
まとめ
Ubuntu 22.04 で libssl.so.1.1
が見つからない問題は、以下のいずれかの方法で解決できます:
- 公式パッケージのインストール - 最も簡単で安全な方法
- ソースからのビルド - システムを変更したくない場合
- 環境の再インストール - 開発環境の場合
- 互換リポジトリからのインストール - 代替手段
長期的には、アプリケーションを OpenSSL 3.0 に対応させることが推奨されます。