Хочу поделиться проверенным способом установки (обновления) версии 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 года.
Поставим для примера версию 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 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 ciphers | tr ":" "\n" | grep GOST
openssl engine
Если всё прошло успешно, то в результатах, вы увидите установленные алгоритмы