OpenSSL

OpenSSL

据我所知,Ubuntu 22.04 已升级到 OpenSSL 3.0。这破坏了我所在大学的安全 WiFi 接入点加入脚本,因为“默认情况下已禁用某些不安全的算法”。我不想降级到 1.1.1 版本,而是将 1.1.1 与 3.0 一起安装,最好使用别名openssl1(就像我使用 eg 和 一样python2python3,然后破解脚本以使用openssl1

最接近支持的方法是什么?

答案1

就我而言,由于 openssl 3.x 从 1.1.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

OpenSSL

更新版本原因:我尝试安装另一个 Ubuntu 22.04,但无法openssl 1.1.1l像以前的版本那样构建库(见下文旧版部分)。这一次,它在make test测试期间失败,并出现错误80-test_ssl_new,输出如下:../test/recipes/80-test_ssl_new.t .................. Dubious, test returned 1 (wstat 256, 0x100)。经过调查,似乎是由于 Ubuntu 22.04 上的软件包升级perl到 5.34,@INC导致 perl 模块丢失,这是由于安全问题。

无论如何,我没有尝试解决这个新问题,而是简单地下载了 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。

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/
./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 的默认 2.5.5 OpenVPN 版本。

侏儒

我发现网络管理器始终以 中的二进制文件为目标/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 版本

本文的旧版本

OpenSSL

这是旧版上面的 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

OpenVPN

这是旧版上面的 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

在后一个版本中启用旧版提供程序:

https://gist.github.com/rdh27785/97210d439a280063bd768006450c435d

/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

然后重新启动相关服务(或重启)

相关内容