Как обновить OpenSSL на Linux

Используемые термины: Linux , CentOS , Ubuntu .

Данная инструкция протестирована на CentOS / Rocky / Debian / Ubuntu / Astra. Но в целом, она подходит на любого дистрибутива Linux.

Посмотреть текущую версию

Узнать текущую версию 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:

LTS версия OpenSSL

* как видим, на момент написания обновления инструкции это была версия 3.0.

И копируем ссылку на ее скачивание:

Ссылка за загрузки LTS OpenSSL

На систему скачиваем исходник с использованием найденной ссылки:

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 -j `nproc`

И устанавливаем:

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

EnglishRussianUkrainian