OpenSSL

OpenSSL

Entendo que o Ubuntu 22.04 foi atualizado para OpenSSL 3.0. Isso quebrou o script de adesão do ponto de acesso WiFi seguro da minha universidade porque "alguns algoritmos inseguros foram desativados por padrão". Não quero fazer o downgrade para a versão 1.1.1, mas em vez disso instalar a 1.1.1 junto com a 3.0, de preferência com um alias como openssl1(assim como posso com, por exemplo, python2e python3) e depois hackear o script para usar openssl1.

Qual é a coisa mais próxima de uma maneira suportada de fazer isso?

Responder1

No meu caso, enfrentei um problema semelhante por causa da mudança do openssl 3.x de 1.1.x., como erros como:

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

Porém, eu ainda queria usar o gerenciador gráfico de rede fornecido pelo gnome, então fiz como mencionado o truque do Gustavo, depois construí uma nova versão openvpn com a versão openssl 1.1.1:

# Move to temp folder
cd /tmp

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

OpenSSL

Motivo da versão atualizada: Tentei com outra instalação do Ubuntu 22.04, mas não consegui construir a openssl 1.1.1lbiblioteca como fiz na versão anterior (veja abaixoVersão antigaseção). Desta vez, ele falhou durante o make testteste com um erro 80-test_ssl_new, com a seguinte saída: ../test/recipes/80-test_ssl_new.t .................. Dubious, test returned 1 (wstat 256, 0x100). Após investigação, parece que devido à atualização do perlpacote no Ubuntu 22.04 para 5.34, o @INCmódulo perl está faltando, devido a um problema de segurança.

De qualquer forma, em vez de tentar resolver esse novo problema, simplesmente baixei o binário Impish em vez de tentar construí-lo do zero:

# 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

Nesse caso, você pode usar diretamente esses pacotes de versões antigas para construir o OpenVPN com as dependências corretas.

OpenVPN

Agora que o OpenSSL é a versão 1.1.1l, assim como o 21.10 Impish, posso construir um binário OpenVPN usando bibliotecas 1.1.1l

# 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

Neste estágio, consegui me conectar à minha VPN usando certificados existentes, no entanto, o gerenciador gráfico de rede ainda estava usando a versão padrão 2.5.5 OpenVPN baseada em OpenSSL 3.x.

Gnomo

Descobri que o gerenciador de rede estava sempre visando o binário em /usr/sbin, então fiz um backup e depois criei um link simbólico para o OpenVPN construído:

# 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

Limpar

Se você usou o binário OpenSSL do Impish, agora você deve fazer um sudo apt update && sudo apt upgradepara recuperar a versão mais recente deste pacote. Não deve quebrar sua marcavelhoVersão OpenVPN

Versão antiga deste artigo

OpenSSL

Isto é oversão antigada parte OpenSsl acima:

# 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

Isto é oversão antigada parte OpenVPN acima. Agora que o OpenSSL é a versão 1.1.1l, assim como o 21.10 Impish, posso construir um binário OpenVPN usando bibliotecas 1.1.1l

# 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

Responder2

Construir a partir do código-fonte funciona, especialmente se você puder apontar o que precisa do openssl 1.1.1 para um diretório específico com as bibliotecas:

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

O diretório que contém as bibliotecas agora é/usr/local/ssl

Responder3

habilite provedores legados na última versão:

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

/etc/ssl/openssl.cnf

adicionar ou alterar

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

em seguida, reinicie os serviços relevantes (ou reinicie)

informação relacionada