OpenSSL

OpenSSL

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. python2und 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 testTests mit einem Fehler fehl 80-test_ssl_newund 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 perlPakets von Ubuntu 22.04 auf 5.34 das @INCPerl-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 upgradedie 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).

verwandte Informationen