Как использовать OpenSSL 1.1.1 в Ubuntu 22.04?

Вопрос или проблема

Я понимаю, что 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

  1. Перейдите в папку для временной загрузки:

    cd /tmp
  2. Загрузите исходные коды 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
  3. Настройте параметры компиляции:

    ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
  4. Соберите исходный код:

    make
  5. Пройдите тесты (необязательно, но рекомендуется):

    make test
  6. Установите 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 или на форумах сообществ.

Оцените материал
Добавить комментарий

Капча загружается...