開放式SSL

開放式SSL

我了解到Ubuntu 22.04升級到了OpenSSL 3.0。這破壞了我大學的安全 WiFi 接入點加入腳本,因為「預設禁用了一些不安全的演算法」。我不想降級到版本 1.1.1,而是安裝 1.1.1 和 3.0,理想情況下使用別名openssl1(就像我可以使用 egpython2和一樣python3),然後修改腳本以使用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

開放式SSL

更新版本原因:我嘗試安裝另一個 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。

開放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 的預設 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版本

本文舊版

開放式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

在後一個版本中啟用舊提供者:

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

然後重新啟動相關服務(或reboot)

相關內容