Skip to content

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.1libcrypto.so.1.1 といった共有ライブラリがシステムから削除されました。しかし、多くのアプリケーション(Python 環境、Node.js、その他のツール)は依然としてこれらの古いバージョンのライブラリに依存しているため、次のようなエラーが発生します:

bash
ImportError: libssl.so.1.1: cannot open shared object file: No such file or directory

解決方法

方法 1: libssl1.1 パッケージのインストール(推奨)

最も簡単で安全な解決方法は、Ubuntu の公式リポジトリから libssl1.1 パッケージをインストールすることです。

bash
# 最新の 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 をインストールする方法もあります。

bash
# 作業ディレクトリの作成
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 の再インストールで問題が解決することがあります。

bash
# 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 をインストールすることもできます。

bash
# 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 対応にアップデートする
  • コンテナ環境を使用する場合は、ベースイメージを適切に選択する

トラブルシューティング

インストール後も問題が解決しない場合は、以下のコマンドでライブラリの存在を確認してください。

bash
# ライブラリの存在確認
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 が見つからない問題は、以下のいずれかの方法で解決できます:

  1. 公式パッケージのインストール - 最も簡単で安全な方法
  2. ソースからのビルド - システムを変更したくない場合
  3. 環境の再インストール - 開発環境の場合
  4. 互換リポジトリからのインストール - 代替手段

長期的には、アプリケーションを OpenSSL 3.0 に対応させることが推奨されます。