Что я делаю не так?
-
Клонируем репозиторий с исходным кодом проекта
git clone https://github.com/gost-engine/engine.git
-
Переходим в директорию с проектом
cd engine
-
Инициализируем и обновляем подмодули
git submodule update --init
-
Создаем новую директорию для сборки проекта
mkdir build
-
Переходим в директорию сборки
cd build
-
Устанавливаем пакеты разработчика для OpenSSL, которые могут понадобиться для сборки проекта
sudo apt-get install libssl-dev
-
Запускаем CMake с указанием типа сборки (Release) и использованием родительской директории (..) в качестве корневого каталога проекта
cmake -DCMAKE_BUILD_TYPE=Release ..
-
Компилируем проект с использованием типа сборки Release
cmake --build . --config Release
-
Устанавливаем скомпилированный проект
sudo cmake --build . --target install --config Release
-
Проверяем версию OpenSSL и список доступных движков
openssl version -e
-
Выводим список файлов в директории /usr/lib/x86_64-linux-gnu/engines-3 и видим библиотеку gost.so
ls /usr/lib/x86_64-linux-gnu/engines-3
Для использования сертификатов OpenSSL с алгоритмами ГОСТ необходимо также отредактировать файл конфигурации /etc/ssl/openssl.cnf:
Добавляем в начало файла:
openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/gost.so
default_algorithms = ALL
Проверяем:
openssl ciphers -v 'GOST2001-GOST89-GOST89'
TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
GOST2001-GOST89-GOST89 TLSv1 Kx=GOST Au=GOST01 Enc=GOST89(256)
user@pc:~/engine/build$ openssl genpkey -algorithm GOST2012 -pkeyopt digest:gost2012 -out private.key
Error initializing GOST2012 context
40A7C2668F7F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (GOST2012 : 0), Properties (<null>)
user@pc:~/engine/build$ openssl ecparam -genkey -name gost2012_256 -out privatekey_gost2012_256.pem
unable to generate key
40877D4B7E7F0000:error:0800008D:elliptic curve routines:group_new_from_name:invalid curve:../crypto/ec/ec_lib.c:1490:
user@pc:~/engine/build$ openssl genpkey -algorithm gost2012-256 -out private_key_gost2012_256.pem
Error initializing gost2012-256 context
40E73C8B747F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (gost2012-256 : 0), Properties (<null>)
user@pc:~/engine/build$ openssl ecparam -name gost2012_256 -genkey -out private_key_gost2012_256.pem
unable to generate key
40B7CDB0597F0000:error:0800008D:elliptic curve routines:group_new_from_name:invalid curve:../crypto/ec/ec_lib.c:1490:
user@pc:~/engine/build$ openssl genpkey -paramfile /etc/ssl/gost/gost2012_256.param -out private_key_gost2012_256.pem
Can't open parameter file /etc/ssl/gost/gost2012_256.param
40E730FA4F7F0000:error:80000002:system library:BIO_new_file:No such file or directory:../crypto/bio/bss_file.c:67:calling fopen(/etc/ssl/gost/gost2012_256.param, r)
40E730FA4F7F0000:error:10000080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:75:
Что я делаю не так?
Клонируем репозиторий с исходным кодом проекта
git clone https://github.com/gost-engine/engine.git
Переходим в директорию с проектом
cd engine
Инициализируем и обновляем подмодули
git submodule update --init
Создаем новую директорию для сборки проекта
mkdir build
Переходим в директорию сборки
cd build
Устанавливаем пакеты разработчика для OpenSSL, которые могут понадобиться для сборки проекта
sudo apt-get install libssl-dev
Запускаем CMake с указанием типа сборки (Release) и использованием родительской директории (..) в качестве корневого каталога проекта
cmake -DCMAKE_BUILD_TYPE=Release ..
Компилируем проект с использованием типа сборки Release
cmake --build . --config Release
Устанавливаем скомпилированный проект
sudo cmake --build . --target install --config Release
Проверяем версию OpenSSL и список доступных движков
openssl version -e
Выводим список файлов в директории /usr/lib/x86_64-linux-gnu/engines-3 и видим библиотеку gost.so
ls /usr/lib/x86_64-linux-gnu/engines-3
Для использования сертификатов OpenSSL с алгоритмами ГОСТ необходимо также отредактировать файл конфигурации /etc/ssl/openssl.cnf:
Добавляем в начало файла:
Проверяем:
openssl ciphers -v 'GOST2001-GOST89-GOST89'