Конвертация сертификата с ГОСТ2012

#StandWithUkraine
Today, 1st Октябрь 2022, Ukraine is still bravely fighting for democratic values, human rights and peace in whole world. Russians ruthlessly kill all civilians in Ukraine including childs and destroy their cities. We are uniting against Putin’s invasion and violence, in support of the people in Ukraine. You can help by donating to Ukrainian's army.

Есть

1 Сертифиакт с контейнером закрытого ключа(header.key, masks.key, masks2.key, name.key, primary.key, primary2.key)

2. Он с поддержкой ГОСТ шифрования (2001 и 2012)

Чего хочется

хочу создать файл закрытого ключа (в формате RSA или PEM) и подписывать командами OPENSSL

Краткий план

  1. Нужно установить исходный сертификат (я использовала КриптоПРО)
  2. Выгружаем сертификат в формате pfx

Используем программу P12FromGostCSP, для получения контйнера PKCS#12

Дальше обновим openssl до версии > 1.1.1 и настроим на поддержку

  1. ГОСТ
  2. Теперь можем конвертировать, к примеру в pem

Настройка системы

важно!: для работы с GOST2012, версия openssl >=1.1.1

# источник (https://gist.github.com/shadz3rg/7badec13e154751116a6446fe9f61906)
# Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-36-generic x86_64)
# (из коробки) OpenSSL 1.1.0g  2 Nov 2017
# (из коробки) curl 7.58.0 (x86_64-pc-linux-gnu)
# PHP 7.2.10-0ubuntu0.18.04.1 (cli) (built: Sep 13 2018 13:45:02) ( NTS )

# Компилим GOST-engine
sudo apt install cmake libssl-dev
git clone --branch=openssl_1_1_0 https://github.com/gost-engine/engine.git gost-engine/engine
cd gost-engine/engine
cmake .
make

# узнаем нужную директорию, копируем туда
openssl version -e
cp bin/gost.so /usr/lib/x86_64-linux-gnu/engines-1.1

# конфиг
cp /etc/ssl/openssl.cnf /etc/ssl/openssl_custom.cnf
nano /etc/ssl/openssl_custom.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-1.1/gost.so
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

# включаем новый конфиг
export OPENSSL_CONF=/etc/ssl/openssl_custom.cnf

openssl s_client -connect service.rosminzdrav.ru:443
curl https://service.rosminzdrav.ru

Проверка поддержки ГОСТ

командой:

openssl engine

результат:

SUSE:/root # openssl engine (dynamic) Dynamic engine loading support
(gost) Reference implementation of GOST engine

посмотреть есть ли ГОСТ шифры

openssl ciphers|tr ':' '\n'|grep GOST

GOST2001-GOST89-GOST89
GOST94-GOST89-GOST89

Команды конвертации openssl

Результат работы утилиты P12FromGostCSP, должен содержать сертификат и закрытый ключ. Проверить это можно командой:

openssl.exe pkcs12 -in C:/key.pfx -nodes

Для преобразования контейнера в формат pem можно воспользоваться командой:

 openssl.exe pkcs12 -in C:/key.pfx -out C:/key.pem -nodes -clcerts

или

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes

о командах openssl

Извление данных из контейнера

Извлечения Закрытого ключа из контейнера PFX:

openssl pkcs12 -in container.pfx -nocerts -out key2019.pem –nodes

или

openssl pkcs12 -nodes -in dev-with- cert.pfx -nocerts -out private.key

Извлечения файла сертификата из контейнера PFX:

openssl pkcs12 -in container.pfx -nokeys -out cert2019.pem

или

openssl pkcs12 -nokeys -in dev-with-priv.pfx -out cert.pem

Удаление парольной фразы из контейнера PFX:

openssl rsa -in key2017.pem -out serverkey2019.key

Просмотр содержимого private key:

openssl pkcs12 -in test_file.pfx -passin pass:{пароль} -nocerts -nodes

Сборка контейнера PFX:

openssl pkcs12 -export -out container.pfx -inkey serverkey2019.key -in cert2019.pem -certfile CA.crt

We can extract the private key form a PFX to a PEM file with this command:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Exporting the certificate only:

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Removing the password from the extracted private key:

openssl rsa -in key.pem -out server.key

Ссылки

#sertifikat #gost2012 #konvertatsiia
0
Barolina Barolina фотография профиля
Сен 27, 2019
по Barolina Barolina
Вам помог этот хинт?
Да !
Нет