Openssl gost linux mint

ГОСТ в OpenSSL

Начиная с версии 1.1.0.3.0.255.ge3af41d.p1-alt3 в пакете openssl-gost-engine доступен и корректно работает control-скрипт для включения и выключения поддержки ГОСТ. Для включения достаточно ввести (от суперпользователя) команду:

control openssl-gost enabled

В раннем релизе 1.1.0.3.0.255.ge3af41d.p1-alt2 была ошибка

Старый способ

Для этого создайте скрипт gost-for-openssl следующего содержания:

# Adapt OpenSSL for GOST cryptography support # See http://www.cryptocom.ru/products/openssl-1-config-en.html . shell-version . shell-ini-config shell_ini_config_prefix="" cfg="/etc/openssl/openssl.cnf" grep -q '^openssl_conf' $cfg || sed -i '1iopenssl_conf = openssl_def' $cfg subst 's/^default_md/#default_md/g' $cfg if [ $libshell_version -ge 3 ] ; then ini_config_set $cfg openssl_def engines engine_section ini_config_set $cfg engine_section gost gost_section ini_config_set $cfg gost_section engine_id gost ini_config_set $cfg gost_section default_algorithms ALL ini_config_set $cfg gost_section CRYPT_PARAMS id-Gost28147-89-CryptoPro-A-ParamSet else grep -q 'Gost' $cfg && exit cat >> $cfg  [openssl_def] engines = engine_section [engine_section] gost = gost_section [gost_section] engine_id = gost default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet _EOF_ fi 

3. Проверьте, доступны ли шифры ГОСТ для OpenSSL:

$ openssl ciphers|tr ':' '\n'|grep GOST GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89

Создание ключей

1. Создаём закрытый ключ с алгоритмом ГОСТ-2012 ( ca.key ):

$ openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out ca.key 

2. Создаём сертификат на 365 дней ( ca.cer ):

$ openssl req -new -x509 -md_gost12_256 -days 365 -key ca.key -out ca.cer \ -subj "/C=RU/ST=Russia/L=Moscow/O=SuperPlat/OU=SuperPlat CA/CN=SuperPlat CA Root" 

3. Проверка сертификата ( ca.cer ):

$ openssl x509 -in ca.cer -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: 17:47:3b:c0:e1:9a:34:02:a6:b5:ea:5e:77:80:c1:c0:8a:6f:2e:a6 Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit) Issuer: C = RU, ST = Russia, L = Moscow, O = SuperPlat, OU = SuperPlat CA, CN = SuperPlat Root Validity Not Before: Apr 14 11:39:25 2020 GMT Not After : Apr 14 11:39:25 2021 GMT Subject: C = RU, ST = Russia, L = Moscow, O = SuperPlat, OU = SuperPlat CA, CN = SuperPlat Root Subject Public Key Info: Public Key Algorithm: GOST R 34.10-2012 with 256 bit modulus Public key: X:80FA69630DB1F99175D4659917082F1A85E49241C7CC3F406B25E42CCB53F875 Y:9AF4A5003B0E73055CEB6DC2D5B325EA16E7CE852CE5D8A479683EBAFC1F54D9 Parameter set: GOST R 34.10-2012 (256 bit) ParamSet B X509v3 extensions: X509v3 Subject Key Identifier: 63:29:DA:30:84:00:C3:7D:B5:F8:43:2F:A6:80:C7:A3:E1:B9:27:8C X509v3 Authority Key Identifier: keyid:63:29:DA:30:84:00:C3:7D:B5:F8:43:2F:A6:80:C7:A3:E1:B9:27:8C X509v3 Basic Constraints: CA:TRUE Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit) 71:73:29:32:b6:6e:9f:cc:22:30:5a:5b:60:4e:0d:41:5f:5d: 02:57:33:a8:0e:4f:b9:26:53:ce:9b:e7:25:12:ec:b6:c3:bf: fc:93:57:db:82:82:3d:fe:8c:ac:db:95:9e:45:ab:21:63:53: 4c:0c:ed:c0:b8:bd:da:f5:0f:7a

Используемая литература

Ссылки

Источник

Включение поддержки ГОСТ в OpenSSL на Ubuntu

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

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

Поддержка ГОСТ в OpenSSL может нам понадобиться для создания сертификатов безопасности на основе российских алгоритмов шифрования. В данной инструкции мы рассмотрим настройку OpenSSL на Linux Ubuntu.

Подготовка системы

Для включения поддержки ГОСТ нам нужен пакет OpenSSL версии 1.1.1 и выше. Проверить текущую версию можно командой:

Мы должны увидеть что-то на подобие:

Если версия ниже, обновляем пакет. Для этого переходим к инструкции Как обновить OpenSSL на Linux.

Также нам нужно установить пакет, включающий библиотеки для поддержки алгоритмов шифрования ГОСТ:

apt install libengine-gost-openssl1.1

Мы готовы к настройке OpenSSL.

Настройка OpenSSL

После установки пакета libengine-gost-openssl в системе появляется файл gost.so. Его местоположение может быть разным, в зависимости от версий. Найдем данный файл командой:

В моем примере данный файл находился в корне системы. Это не очень правильно. Перенесем его в каталог, где должны находиться библиотеки в Ubuntu:

mv /gost.so /usr/lib/x86_64-linux-gnu/

Теперь откроем конфигурационный файл openssl:

* файл может содержать описание нескольких конфигураций. Директива openssl_conf указывает, какую конфигурацию должен использовать OpenSSL.

Убедитесь, что ниже нет другой директивы openssl_conf. В противном случае, будет использоваться не наша, а так, что ниже.

[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
engine_id = gost
dynamic_path = /usr/lib/x86_64-linux-gnu/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

* обратите внимание на опцию dynamic_path, в которой мы указываем полный путь до файла gost.so. Его мы переносили в каталог /usr/lib/x86_64-linux-gnu.

Проверим, что openssl поддерживает новые алгоритмы — для этого вводим команду:

openssl ciphers | tr ‘:’ ‘\n’ | grep GOST

Мы должны увидеть что-то на подобие:

LEGACY-GOST2012-GOST8912-GOST8912
IANA-GOST2012-GOST8912-GOST8912
GOST2001-GOST89-GOST89

Поддержка ГОСТ в OpenSSL добавлена.

Создание ГОСТ-сертификата

Создадим сертификат на основе алгоритма шифрования ГОСТ. Вводим такую команду:

openssl req -x509 -newkey gost2012_256 -pkeyopt paramset:A -nodes -keyout cert.key -out cert.pem

* это простая команда, которая сформирует открытый ключ cert.pem и закрытый cert.key с российским алгоритмом безопасности gost2012_256.

Система задаст несколько вопросов, после чего будут сформированы ключи.

Посмотрим на открытый ключ:

openssl x509 -text -in cert.pem

Мы увидим что-то на подобие:

Certificate:
Data:
Version: 3 (0x2)
Serial Number:
04:51:9c:34:ba:d9:70:51:35:1f:9a:b6:a4:12:9a:0f:61:4d:2e:f2
Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)

* Обратите внимание на Signature Algorithm.

Источник

ЭЦП по ГОСТ на GNU/Linux с помощью OpenSSL

Понадобилось как-то раз срочно подписать важный документ и отправить его контрагенту, который доверяет только бумаге с нотариально заверенной подписью или верифицированной ЭЦП. Попробуем же сэкономить время и деньги и по максимуму избежать платных проприетарных и аппаратных решений.

Удостоверяющий Центр выдал нам ключ и сертификат в одном PKCS#12 файле auth.p12
Я исхожу из того, что у нас в наличии есть linux и docker. Можно даже не локально — вполне можно закинуть наш документ куда-нибудь на хостинг и подключиться по SSH. Подробности установки docker и работы с докер-образами оставим за пределами этой заметки. Перейдём сразу к делу:

Прямо из папки, где лежит наш документ на подпись (document.pdf) и PKCS#12 файл (auth.p12) запускаем замечательный docker образ OpenSSL с поддержкой ГОСТ и заходим в контейнер:

sudo docker run —rm -i -t -v `pwd`:`pwd` -w `pwd` rnix/openssl-gost bash

Вытаскиваем из PKCS#12 файла приватный ключ и сохраняем его в pem-формате. Может потребоваться ввести ваш пароль от PKCS#12 файла.

openssl pkcs12 -in auth.p12 -out key.pem -engine gost -nodes -clcerts

Аналогично вытаскиваем из PKCS#12 файла и сертификат.

openssl pkcs12 -in auth.p12 -clcerts -nokeys -out pub.crt

Подписываем документ. Подпись будет отсоединенная, в формате PKCS#7 в отдельном файле (document.pdf.sig)

openssl smime -sign -signer pub.crt -inkey key.pem -engine gost -binary -noattr -outform DER -in document.pdf -out document.pdf.sig

Проверить подпись можно много где, как локально так и на сайте госуслуг, например.
Всё. Можно отправлять контрагенту документ и соответствующий sig файл.

Если вдруг у вас сертификат в формате DER (в Windows часто это файл с расширением .cer), то можно конвертировать такой сертификат в pem-формат:

openssl x509 -inform DER -in pub.cer -out pub.crt

Файлы в примерах команд выше:

auth.p12 — бинарный PFX-файл, содержащий сертификат и закрытый ключ
pub.crt — сертификат (содержащий открытый ключ) в текстовом формате PEM
pub.cer — сертификат (содержащий открытый ключ) в бинарном формате DER
key.pem — закрытый ключ
document.pdf — pdf-документ, который необходимо подписать
document.pdf.sig — файл куда будет сохранена отсоединённая подпись к документу

Источник

Читайте также:  Виртуальный привод iso linux
Оцените статью
Adblock
detector