Как собрать OpenSSL из исходников, не полагаясь на /lib/libcrypto.so

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

После нескольких сессий интенсивного поиска в Google и попыток различных подходов с ChatGPT, я, похоже, зашёл в тупик. Моя проблема возникает, когда я пытаюсь собрать OpenSSL из исходников: кажется, что процесс сборки хочет связаться с libcrypto.so, находящимся в /lib, но версия OpenSSL, поставляемая системой, устарела, поэтому это заканчивается неудачей, так как OpenSSL теперь включает функциональность, отсутствующую в моей версии libcrypto.so, в частности, QUIC, и сбой происходит на safe_muldiv_uint64_t. Это похоже на ловушку, и я абсолютно не знаю, как из этого выкарабкаться.

Некоторые из предложений, которые я нашёл, включали сборку OpenSSL в chroot-окружении, но мне кажется, это немного чрезмерно?

Итак, мой вопрос: как собрать OpenSSL, не связывая с /lib/libcrypto.so, а используя версию libcrypto из пакетного исходника?

Ответ или решение

Чтобы собрать OpenSSL из исходников, не полагаясь на системную библиотеку /lib/libcrypto.so, необходимо выполнить несколько шагов, которые помогут избежать зависимости от устаревшей версии библиотеки. Ниже приведены последовательные инструкции для успешной сборки OpenSSL:

1. Установка необходимых зависимостей

Прежде всего, убедитесь, что у вас установлены все необходимые пакеты для сборки. Используйте менеджер пакетов вашей операционной системы, чтобы установить следующие зависимости:

sudo apt-get install build-essential checkinstall
sudo apt-get install perl wget

2. Скачивание исходников OpenSSL

Скачайте последнюю версию исходного кода OpenSSL с официального сайта:

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xzf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k

3. Конфигурация сборки

Перед конфигурацией сборки OpenSSL нужно задать варианты --prefix и --openssldir, чтобы они указывали на пользовательский каталог, где будут установлены библиотека и заголовочные файлы OpenSSL. Убедитесь, что при этом не будет путей, ссылающихся на системные библиотеки.

Запустите следующую команду:

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

Если у вас будет необходимость исключить определенные флаги компиляции, вы можете использовать параметры конфигурации.

4. Сборка и установка

Запустите сборку и установку OpenSSL, чтобы создать библиотеки без зависимости от системных версий:

make
sudo make install

5. Обновление переменных окружения

Чтобы система использовала новые библиотеки, необходимо обновить переменные окружения. Для этого добавьте следующие строки в файл ~/.bashrc или ~/.bash_profile:

export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/openssl/bin:$PATH

Примените изменения:

source ~/.bashrc

6. Проверка установки

Для проверки правильности установки выполните:

openssl version

Вы должны увидеть версию OpenSSL, которую вы только что собрали, без зависимости от устаревшей libcrypto.so.

Заключение

Следуя этим шагам, вы сможете собрать OpenSSL из исходников, безопасно игнорируя устаревшие библиотеки на вашей системе. Если на пути возникнут ошибки, пожалуйста, убедитесь, что все зависимости установлены, и проверьте вывод на предмет других возможных проблем.

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

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