- Вопрос или проблема
- OpenSSL
- OpenVPN
- Gnome
- Очистка
- Старая версия этой статьи
- OpenSSL
- OpenVPN
- Ответ или решение
- Использование OpenSSL 1.1.1 в Ubuntu 22.04
- Шаг 1: Установка необходимых зависимостей
- Шаг 2: Загрузка и компиляция OpenSSL 1.1.1
- Шаг 3: Создание символической ссылки
- Шаг 4: Проверка установки
- Шаг 5: Настройка других приложений
- Заключение
Вопрос или проблема
Я понимаю, что Ubuntu 22.04 обновился до OpenSSL 3.0. Это сломало мой скрипт подключения к безопасной WiFi-точке доступа университета, поскольку «некоторые небезопасные алгоритмы отключены по умолчанию». Я не хочу откатываться до версии 1.1.1, а вместо этого установить 1.1.1 рядом с 3.0, желательно под псевдонимом, как openssl1
(так же, как я могу с, например, python2
и python3
), а затем изменить скрипт для использования openssl1
.
Какой способ наиболее близок к поддерживаемому для этого?
В моем случае я столкнулся с аналогичной проблемой из-за перехода openssl 3.x с 1.1.x, такие как ошибки:
ОШИБКА ВЕРИФИКАЦИИ: depth=0, ошибка=CA сигнатура алгоритма дайджеста слишком слабая
Тем не менее, я все же хотел использовать графический сетевой менеджер, предоставленный gnome, поэтому я использовал трюк от Густаво, затем собрал новую версию openvpn с версией openssl 1.1.1:
# Переход к временной папке
cd /tmp
# получить зависимости
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 .................. Сомнительно, тест вернул 1 (wstat 256, 0x100)
.
После расследования, похоже, что из-за обновления пакета perl
на Ubuntu 22.04 до 5.34, модуль perl @INC
отсутствует из-за проблемы безопасности.
В любом случае, вместо того чтобы пытаться решить эту новую проблему, я просто скачал бинарник Impish вместо того, чтобы пытаться собрать его с нуля:
# загрузить бинарные пакеты openssl из сборок Impish
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
# установить загруженные бинарные пакеты
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 с правильными зависимостями.
OpenVPN
Теперь, когда OpenSSL версии 1.1.1l, как и с 21.10 Impish, я могу собрать бинарник OpenVPN, используя библиотеки 1.1.1l
# Получить источники OpenVPN из Ubuntu 22.04 Jammy
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/openvpn/2.5.5-1ubuntu3/openvpn_2.5.5.orig.tar.xz
# Распаковать файлы
tar -xvf openvpn_2.5.5.orig.tar.xz
# собрать openvpn 2.5.5
cd ..
cd openvpn-2.5.5/
./configure
make -j 4 && sudo make install
# обновить кеш
hash -r
# проверить версию
/usr/local/sbin/openvpn --version
ldd /usr/bin/openssl
ldd /usr/local/sbin/openvpn
На этом этапе я смог подключиться к своему VPN, используя существующие сертификаты, тем не менее, графический сетевой менеджер все еще использовал версию OpenVPN 2.5.5 по умолчанию на основе OpenSSL 3.x.
Gnome
Я обнаружил, что сетевой менеджер всегда ориентировался на бинарник в /usr/sbin
, так что я сделал резервную копию, а затем создал символическую ссылку на собранный OpenVPN:
# сделать резервную копию OpenVPN 2.5.5 по умолчанию перед заменой
sudo mv /usr/sbin/openvpn /usr/sbin/openvpn-2.5.5_default
# Символическая ссылка на новый клиент OpenVPN, собранный с библиотекой OpenSSL 1.1.1l
sudo ln -s /usr/local/sbin/openvpn /usr/sbin/openvpn
Очистка
Если вы использовали бинарник OpenSSL из Impish, вам следует выполнить sudo apt update && sudo apt upgrade
, чтобы восстановить новейшую версию этого пакета. Это не должно сломать вашу старую версию OpenVPN.
Старая версия этой статьи
OpenSSL
это старая версия части OpenSSL выше:
# Получить источники OpenSSL из 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
# Распаковать файлы
tar -xvf openssl_1.1.1l.orig.tar.gz
# собрать 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
# обновить кеш
hash -r
# проверить версию
/usr/local/ssl/bin/openssl <<< версия
# символическая ссылка на бинарный для разрешения пути
sudo ln -s /usr/local/ssl/bin/openssl /usr/local/bin/openssl
OpenVPN
Это старая версия части OpenVPN выше. Теперь, когда OpenSSL версии 1.1.1l, как и с 21.10 Impish, я могу собрать бинарник OpenVPN, используя библиотеки 1.1.1l
# Получить источники OpenVPN из Ubuntu 22.04 Jammy
wget https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/openvpn/2.5.5-1ubuntu3/openvpn_2.5.5.orig.tar.xz
# Распаковать файлы
tar -xvf openvpn_2.5.5.orig.tar.xz
# собрать 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
# обновить кеш
hash -r
# проверить версию
/usr/local/sbin/openvpn --version
ldd /usr/local/bin/openssl
ldd /usr/local/sbin/openvpn
Сборка из источников работает, особенно если вы можете указать, что нужно 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
включить устаревшие поставщики в последней версии:
https://gist.github.com/rdh27785/97210d439a280063bd768006450c435d
/etc/ssl/openssl.cnf
добавьте или измените
# Список провайдеров для загрузки
[provider_sect]
default = default_sect
legacy = legacy_sect
[default_sect]
activate = 1
[legacy_sect]
activate = 1
затем перезапустите соответствующие службы (или перезагрузите)
Отсутствует libssl 1.1.1.1 в Ubuntu 24.04
После некоторых исследований я нашел, как загрузить и установить его.
curl -O http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb
dpkg -i libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb
Ответ или решение
Использование OpenSSL 1.1.1 в Ubuntu 22.04
Ubuntu 22.04 перешла на OpenSSL 3.0, и это может вызвать проблемы с совместимостью некоторых скриптов и программ, которые зависят от OpenSSL 1.1.1. Если вам необходимо использовать OpenSSL 1.1.1 параллельно с 3.0, следуя подходу, аналогичному тем, что применяются к Python (например, python2 и python3), вы можете установить OpenSSL 1.1.1 и создать для него псевдоним. Ниже приведено детальное руководство по установке и настройке OpenSSL 1.1.1 в Ubuntu 22.04.
Шаг 1: Установка необходимых зависимостей
Перед установкой OpenSSL 1.1.1 вам потребуются некоторые зависимости. Откройте терминал и выполните следующую команду:
sudo apt update
sudo apt install build-essential checkinstall zlib1g-dev
Шаг 2: Загрузка и компиляция OpenSSL 1.1.1
-
Перейдите в папку для временной загрузки:
cd /tmp
-
Загрузите исходные коды OpenSSL 1.1.1:
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz tar -xzvf openssl-1.1.1l.tar.gz cd openssl-1.1.1l
-
Настройте параметры компиляции:
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
-
Соберите исходный код:
make
-
Пройдите тесты (необязательно, но рекомендуется):
make test
-
Установите OpenSSL:
sudo make install
После выполнения этих шагов ваша версия OpenSSL 1.1.1 будет установлена в /usr/local/ssl
.
Шаг 3: Создание символической ссылки
Чтобы удобно использовать OpenSSL 1.1.1, создайте символическую ссылку:
sudo ln -s /usr/local/ssl/bin/openssl /usr/local/bin/openssl1
Теперь вы можете вызывать OpenSSL 1.1.1 с помощью команды openssl1
.
Шаг 4: Проверка установки
Проверьте установленную версию OpenSSL, выполнив команду:
openssl1 version
Также рекомендуется убедиться, что ваша система использует правильные библиотеки:
ldd /usr/local/bin/openssl1
Шаг 5: Настройка других приложений
Если вы используете приложения, которые зависят от OpenSSL, таких как OpenVPN, вам может потребоваться перенастроить их для работы с библиотеками OpenSSL 1.1.1. Например, при сборке OpenVPN вам необходимо указать путь к библиотекам OpenSSL 1.1.1:
CFLAGS="-I/usr/local/ssl/include -L/usr/local/ssl/lib" ./configure
Заключение
Установка OpenSSL 1.1.1 в Ubuntu 22.04 — отличный способ обеспечить совместимость ваших скриптов и приложений без необходимости понижать версию используемой системы. Следуя этому руководству, вы сможете установить OpenSSL 1.1.1 параллельно с OpenSSL 3.0 и использовать его через простой псевдоним. Если у вас возникнут вопросы или проблемы в процессе установки, дополнительные рекомендации можно найти в соответствующей документации OpenSSL или на форумах сообществ.