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

Обновлено Обновлено: Опубликовано Опубликовано:

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

Данная инструкция протестирована на CentOS 6, 7, 8 и Ubuntu.

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

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

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

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

# Linux # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет