Как обновить OpenSSL на Linux
Используемые термины: Linux, CentOS, Ubuntu.
Данная инструкция протестирована на CentOS / Rocky / Debian / Ubuntu / Astra. Но в целом, она подходит на любого дистрибутива Linux.
Узнать установленную версию OpenSSL
Обновление из репозитория
Обновление из исходников
Решение возможных проблем
Посмотреть текущую версию
Узнать текущую версию openssl в Linux можно следующей командой:
openssl version
Мы увидим что-то на подобие:
OpenSSL 1.1.1 11 Sep 2018
* в данном примере используется версия openssl 1.1.1 от 11 сентября 2018 года.
Если команда вернула ошибку:
openssl: command not found
... значит пакет openssl не установлен в системе.
Обновить/установить openssl можно из репозитория операционной системы или собрав его из исходника. Мы рассмотрим оба варианта.
Из пакетов
Самый простой способ — воспользоваться репозиторием. Однако, в нем может находиться далеко не последняя версия.
В зависимости от типа Linux, наши команды будут немного отличаться.
а) Для DEB-систем (Debian, Ubuntu, Astra Linux):
apt update
apt install openssl
б) Для RPM-систем (Rocky Linux, CentOS):
yum makecache
yum install openssl
* также можно ввести yum update openssl.
Если будет найдено обновление, система предложит обновить пакет — отвечаем Y.
Если обновлений нет или будет установлена не последняя версия, выполняем установку из исходника.
Из исходника
Устанавливаем пакеты, необходимые для сборки пакета. Команда зависит от дистрибутива Linux.
а) Для DEB-систем:
apt install make gcc wget tar perl
б) Для RPM-систем:
yum install make gcc wget tar perl
Переходим по ссылке https://www.openssl.org/source/ и находим в описании LTS версию openssl:
* как видим, на момент написания обновления инструкции это была версия 3.0.
И копируем ссылку на ее скачивание:
На систему скачиваем исходник с использованием найденной ссылки:
wget https://www.openssl.org/source/openssl-3.0.12.tar.gz
И распаковываем его с последующим удалением:
tar -xf openssl-*.tar.gz && rm -f openssl-*.tar.gz
Переходим в папку с распакованным исходником:
cd openssl-*
Конфигурируем его:
./config --prefix=/usr --openssldir=/usr
Собираем:
make
И устанавливаем:
make install
Проверяем версию:
openssl version -a
Система вернет полные сведения об openssl, например:
OpenSSL 3.0.12 24 Oct 2023 (Library: OpenSSL 3.0.12 24 Oct 2023)
built on: Fri Jan 12 20:24:49 2024 UTC
platform: linux-x86_64
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
OPENSSLDIR: "/usr"
ENGINESDIR: "/usr/lib64/engines-3"
MODULESDIR: "/usr/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0x80202001479bffff:0x0
Обновление выполнено.
Возможные ошибки
libssl.so.X: cannot open shared object file
При запуске команды openssl, система возвращает ошибку:
openssl: error while loading shared libraries: libssl.so.X: cannot open shared object file: No such file or directory
Причина: openssl не может найти нужную ей библиотеку (libssl.so), так как она распологается в нестандартном для операционной системы месте.
Решение: необходимо добавить в ldconfig правильный путь до libssl.so. Сначала найдем библиотеку, которой не хватает openssl:
find / -name libssl.so.3
В моем случае ответ был:
/usr/lib64/libssl.so.3
Значит, путь до библиотеки /usr/lib64 — его и добавляем в ldconfig. Для это создаем файл:
vi /etc/ld.so.conf.d/openssl.conf
/usr/lib64
Применяем настройки:
ldconfig
Снова проверяем:
openssl version