Хочу поделиться проверенным способом установки (обновления) версии OpenSSL на операционной системе СentOS версии 7.

В качестве системы, я использовал готовое решение «1C-Битрикс: Виртуальная машина VMBitrix» . Мои характеристики на момент установки:

  • Bitrix VM appliance 7.5.5
  • Kernel: 3.10.0-1160.105.1.el7.x86_64
  • OS: CentOS Linux release 7.9.2009 (Core)
  • CPU: Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz x1

Обновление OpenSSL

По умолчанию, в образе стоит старая OpenSSL версии 1.0.2k-fips 2017 года. Версия OpenSSL

Поставим для примера версию 1.1.1t 2023 года.

Первым шагом устанавливаем пакеты для разработки и работы с исходниками

sudo yum -y group install 'Development Tools'
sudo yum -y install perl-core zlib-devel cmake3 wget curl unzip yum-utils gcc

Далее переходим во временную папку

cd /tmp

Скачиваем архив с исходниками нужной версии OpenSSL. На моём примере возьмем версию 1.1.1t.

wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz

Если ссылка недоступна, то можно скачать тут

Распаковываем архив

tar -xzvf openssl-1.1.1t.tar.gz

Переходим в распакованную директорию

cd openssl-1.1.1t

Делаем конфигурацию

./config no-async shared --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl,-rpath,/usr/local/ssl/lib

Собираем и устанавливаем (не забудьте в процессе ввести пароль для sudo!)

make && sudo make install

Удаляем существующий бинарник (на всякий случай можно сделать бэкап) и делаем символьную ссылку на новую версию OpenSSL

sudo rm /usr/bin/openssl && sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

Проверяем версию OpenSSL

openssl version -a

Установка алгоритмов ГОСТ и настройка OpenSSL

Для работы с ЕСИА (Единая система идентификации и аутентификации) или с сервисом Госключ необходима поддержка алгоритмов ГОСТ.

Переходим во временную папку

cd /tmp

Скачиваем архив с исходниками

wget https://github.com/gost-engine/engine/archive/3bd506dcbb835c644bd15a58f0073ae41f76cb06.zip

Если ссылка недоступна, то можно скачать тут

Распаковываем архив

unzip 3bd506dcbb835c644bd15a58f0073ae41f76cb06.zip

Переходим в распакованный каталог

cd engine-3bd506dcbb835c644bd15a58f0073ae41f76cb06

Создаем директорию build и переходим в неё

mkdir build && cd build

Задаем конфигурацию для сборки

cmake3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS='-I/usr/local/ssl/include -L/usr/local/ssl/lib' -DOPENSSL_ROOT_DIR=/usr/local/ssl -DOPENSSL_INCLUDE_DIR=/usr/local/ssl/include -DOPENSSL_LIBRARIES=/usr/local/ssl/lib ..

Собираем

cmake3 --build . --config Release

Переходим в директорию bin

cd ../bin/

Копируем получившиеся модули

sudo cp gostsum gost12sum /usr/local/bin/
sudo cp gost.so /usr/local/ssl/lib/engines-1.1/

Теперь вносим изменения в конфигурационный файл OpenSSL. Открываем любым редактором. Я использовал vim.

sudo vim /usr/local/ssl/openssl.cnf

Вначале файла после комментариев прописываем следующую строчку

openssl_conf=openssl_def

Должно выглядить примерно так Скриншот начала файла конфигурации OpenSSL

Затем в конце файла дописываем следующие блоки

# OpenSSL default section
[openssl_def]
engines = engine_section

# Engine section
[engine_section]
gost = gost_section

# Engine gost section
[gost_section]
engine_id = gost
dynamic_path = /usr/local/ssl/lib/engines-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

Должно получится примерно так Скриншот конца файла конфигурации OpenSSL Всё готово. Теперь проверяем видит ли OpenSSL алгоритмы ГОСТ

openssl ciphers | tr ":" "\n" | grep GOST 
openssl engine

Если всё прошло успешно, то в результатах, вы увидите установленные алгоритмы Проверка установки ГОСТ в OpenSSL