
Ich verstehe, dass Ubuntu 22.04 auf OpenSSL 3.0 aktualisiert wurde. Dies hat das sichere Verbindungsskript für den WLAN-Zugangspunkt meiner Universität beschädigt, da „einige unsichere Algorithmen standardmäßig deaktiviert wurden“. Ich möchte nicht auf Version 1.1.1 downgraden, sondern stattdessen 1.1.1 neben 3.0 installieren, idealerweise unter einem Alias wie openssl1
(genau wie ich es mit z. B. python2
und kann python3
) und dann das Skript hacken, um zu verwenden openssl1
.
Was ist die unterstützte Methode, die diesem Zweck am nächsten kommt?
Antwort1
In meinem Fall traten aufgrund der Umstellung von OpenSSL 3.x von 1.1.x auf ein ähnliches Problem auf, beispielsweise folgende Fehler:
VERIFY ERROR: depth=0, error=CA signature digest algorithm too weak
Ich wollte jedoch weiterhin den grafischen Netzwerkmanager von Gnome verwenden und habe daher den von Gustavo beschriebenen Trick angewendet und anschließend eine neue OpenVPN-Version mit der OpenSSL-Version 1.1.1 erstellt:
# Move to temp folder
cd /tmp
# get dependencies
sudo apt install libssl-dev liblzo2-dev libpam0g-dev
OpenSSL
Grund für die aktualisierte Versionopenssl 1.1.1l
: Ich habe es mit einer anderen Ubuntu 22.04-Installation versucht, konnte die Bibliothek jedoch nicht wie in der vorherigen Version erstellen (siehe untenAlte VersionAbschnitt). Diesmal schlug es während des make test
Tests mit einem Fehler fehl 80-test_ssl_new
und lieferte die folgende Ausgabe: ../test/recipes/80-test_ssl_new.t .................. Dubious, test returned 1 (wstat 256, 0x100)
. Nach der Untersuchung scheint es, dass aufgrund des Upgrades des perl
Pakets von Ubuntu 22.04 auf 5.34 das @INC
Perl-Modul aufgrund eines Sicherheitsproblems fehlt.
Anstatt zu versuchen, dieses neue Problem zu lösen, habe ich einfach die Impish-Binärdatei heruntergeladen, anstatt zu versuchen, sie von Grund auf neu zu erstellen:
# 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
In diesem Fall können Sie diese Pakete der alten Version direkt verwenden, um das OpenVPN mit den richtigen Abhängigkeiten zu erstellen.
OpenVPN
Da OpenSSL nun die Version 1.1.1l ist, kann ich wie bei 21.10 Impish eine OpenVPN-Binärdatei mit 1.1.1l-Bibliotheken erstellen
# 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
Zu diesem Zeitpunkt konnte ich mithilfe vorhandener Zertifikate eine Verbindung zu meinem VPN herstellen, der grafische Netzwerkmanager verwendete jedoch immer noch die standardmäßige OpenVPN-Version 2.5.5, die auf OpenSSL 3.x basiert.
Gnom
Ich habe festgestellt, dass der Netzwerkmanager immer auf Binärdateien in abzielte /usr/sbin
, also habe ich ein Backup erstellt und dann einen symbolischen Link zum erstellten OpenVPN erstellt:
# 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
Aufräumen
Wenn Sie die OpenSSL-Binärdatei von Impish verwendet haben, sollten Sie jetzt sudo apt update && sudo apt upgrade
die neueste Version dieses Pakets wiederherstellen. Es sollte Ihre Marke nicht beschädigen.altOpenVPN-Version
Alte Version dieses Artikels
OpenSSL
Dies ist dasalte Versiondes OpenSSL-Teils oben:
# 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
Dies ist dasalte Versiondes OpenVPN-Teils oben. Da OpenSSL nun die Version 1.1.1l ist, wie bei 21.10 Impish, kann ich eine OpenVPN-Binärdatei mit 1.1.1l-Bibliotheken erstellen
# 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
Antwort2
Das Erstellen aus dem Quellcode funktioniert, insbesondere wenn Sie für alles, was OpenSSL 1.1.1 benötigt, auf ein bestimmtes Verzeichnis mit den Bibliotheken verweisen können:
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
Das Verzeichnis mit den Bibliotheken lautet nun/usr/local/ssl
Antwort3
Aktivieren Sie Legacy-Anbieter in der letzteren Version:
https://gist.github.com/rdh27785/97210d439a280063bd768006450c435d
/etc/ssl/openssl.cnf
hinzufügen oder ändern
# List of providers to load
[provider_sect]
default = default_sect
legacy = legacy_sect
[default_sect]
activate = 1
[legacy_sect]
activate = 1
Starten Sie dann die entsprechenden Dienste neu (oder führen Sie einen Neustart durch).