
Ubuntu 22.04가 OpenSSL 3.0으로 업그레이드된 것으로 알고 있습니다. "일부 안전하지 않은 알고리즘이 기본적으로 비활성화되어 있기 때문에" 이로 인해 우리 대학의 보안 WiFi 액세스 포인트 연결 스크립트가 손상되었습니다. 버전 1.1.1로 다운그레이드하고 싶지는 않지만 대신 이상적으로는 3.0과 함께 1.1.1을 설치하고 (예: 및 openssl1
에서 할 수 있는 것처럼 ) 스크립트를 해킹하여 .python2
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
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)
. 조사 결과 perl
Ubuntu 22.04에서 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은 21.10 Impish와 마찬가지로 1.1.1l 버전이므로 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
오픈VPN
이것이구 버전위의 OpenVPN 부분 중 하나입니다. 이제 OpenSSL은 21.10 Impish와 마찬가지로 1.1.1l 버전이므로 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
그런 다음 관련 서비스를 다시 시작하거나 재부팅하십시오.