オープンSSL

オープンSSL

Ubuntu 22.04 が OpenSSL 3.0 にアップグレードされたことは理解しています。これにより、私の大学の安全な WiFi アクセス ポイント参加スクリプトが壊れてしまいました。これは、「一部の安全でないアルゴリズムがデフォルトで無効になっている」ためです。バージョン 1.1.1 にダウングレードするのではなく、代わりに 1.1.1 を 3.0 と一緒にインストールし、理想的には ( や のように) のようなエイリアスでインストールしopenssl1てから、 を使用するようにスクリプトをハックします。python2python3openssl1

これを行うためのサポートされている方法に最も近いものは何ですか?

答え1

私の場合、openssl 1.1.x から 3.x に移行したために、次のようなエラーなどの同様の問題が発生しました。

VERIFY ERROR: depth=0, error=CA signature digest algorithm too weak

しかし、私はまだ gnome が提供するグラフィカル ネットワーク マネージャーを使用したかったので、Gustavo が述べたトリックに従って、openssl 1.1.1 バージョンで新しい openvpn バージョンをビルドしました。

# Move to temp folder
cd /tmp

# get dependencies
sudo apt install libssl-dev liblzo2-dev libpam0g-dev

オープンSSL

バージョン更新の理由: 別のUbuntu 22.04インストールで試してみましたが、openssl 1.1.1l以前のバージョンと同じようにライブラリをビルドできませんでした(以下を参照)。旧バージョンセクション)。今回は、make testテスト中にエラーが発生し80-test_ssl_new、次の出力が表示されて失敗しました。調査の結果、 Ubuntu 22.04 のパッケージを 5.34 にアップグレードしたため、セキュリティ上の問題により perl モジュールが欠落しているよう../test/recipes/80-test_ssl_new.t .................. Dubious, test returned 1 (wstat 256, 0x100)です。perl@INC

とにかく、この新しい問題を解決しようとする代わりに、最初からビルドするのではなく、単に Impish バイナリをダウンロードしました。

# download binary openssl packages from Impish builds
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.1.1f-1ubuntu2.16_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.16_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb

# install downloaded binary packages
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.16_amd64.deb
sudo dpkg -i libssl-dev_1.1.1f-1ubuntu2.16_amd64.deb
sudo dpkg -i openssl_1.1.1f-1ubuntu2.16_amd64.deb

このような場合、古いバージョンのパッケージを直接使用して、正しい依存関係を持つ OpenVPN を構築できます。

オープンVPN

OpenSSLが1.1.1lバージョンになったので、21.10 Impishと同様に、1.1.1lライブラリを使用してOpenVPNバイナリを構築できます。

# Get OpenVPN sources from Ubuntu 22.04 Jammy
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/openvpn/2.5.5-1ubuntu3/openvpn_2.5.5.orig.tar.xz

# Extract files
tar -xvf openvpn_2.5.5.orig.tar.xz

# build openvpn 2.5.5
cd ..
cd openvpn-2.5.5/
./configure
make -j 4 && sudo make install

# refresh cache
hash -r

# check version
/usr/local/sbin/openvpn --version
ldd /usr/bin/openssl
ldd /usr/local/sbin/openvpn

この段階では、既存の証明書を使用して VPN に接続できましたが、グラフィカル ネットワーク マネージャーは、OpenSSL 3.x に基づくデフォルトの OpenVPN バージョン 2.5.5 をまだ使用していました。

ノーム

ネットワーク マネージャーが常に のバイナリをターゲットにしていることがわかったので/usr/sbin、バックアップを作成してから、ビルドされた OpenVPN をシンボリック リンクしました。

# make a backup of default OpenVPN 2.5.5 before replace
sudo mv /usr/sbin/openvpn /usr/sbin/openvpn-2.5.5_default

# Symlink new OpenVPN client built with OpenSSL 1.1.1l library
sudo ln -s /usr/local/sbin/openvpn /usr/sbin/openvpn

掃除

ImpishのOpenSSLバイナリを使用した場合は、sudo apt update && sudo apt upgradeこのパッケージの最新バージョンを復元する必要があります。ブランドを損なうことはありません。古いOpenVPNバージョン

この記事の旧バージョン

オープンSSL

これは古いバージョン上記の OpenSsl 部分の:

# Get OpenSSL sources from Ubuntu 21.10 Impish
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/openssl/1.1.1l-1ubuntu1.6/openssl_1.1.1l.orig.tar.gz

# Extract files
tar -xvf openssl_1.1.1l.orig.tar.gz

# build openssl 1.1.1l
cd /tmp/openssl-1.1.1l/
./config shared enable-ec_nistp_64_gcc_128 -Wl,-rpath=/usr/local/ssl/lib --prefix=/usr/local/ssl
make -j 4
make test && sudo make install

# refresh cache
hash -r

# check version
/usr/local/ssl/bin/openssl <<< version

# symlink binary for path resolution
sudo ln -s /usr/local/ssl/bin/openssl /usr/local/bin/openssl

オープンVPN

これは古いバージョン上記のOpenVPNの部分。OpenSSLが1.1.1lバージョンになったので、21.10 Impishと同様に、1.1.1lライブラリを使用してOpenVPNバイナリを構築できます。

# Get OpenVPN sources from Ubuntu 22.04 Jammy
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/openvpn/2.5.5-1ubuntu3/openvpn_2.5.5.orig.tar.xz

# Extract files
tar -xvf openvpn_2.5.5.orig.tar.xz

# build openvpn 2.5.5
cd ..
cd openvpn-2.5.5/
CFLAGS="-I/usr/local/ssl/include -Wl,-rpath=/usr/local/ssl/lib -L/usr/local/ssl/lib"
./configure
make -j 4 && sudo make install

# refresh cache
hash -r

# check version
/usr/local/sbin/openvpn --version
ldd /usr/local/bin/openssl
ldd /usr/local/sbin/openvpn

答え2

ソースからのビルドは、openssl 1.1.1 を必要とするものをライブラリのある特定のディレクトリに指定できる場合は特に機能します。

cd /usr/local/src/
sudo git clone https://github.com/openssl/openssl.git -b OpenSSL_1_1_1-stable openssl-1.1.1m
cd openssl-1.1.1m
sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
sudo make
sudo make test
sudo make install_sw

ライブラリを含むディレクトリは/usr/local/ssl

答え3

後者のバージョンでレガシープロバイダーを有効にします。

出典: github.com

/etc/ssl/openssl.cnf

追加または変更

 # List of providers to load
 [provider_sect]
 default = default_sect
 legacy = legacy_sect 
 [default_sect]
 activate = 1
 [legacy_sect]
 activate = 1

関連するサービスを再起動(または再起動)します。

関連情報