OpenSSL и ГОСТ. Генерация ключей

После того как [установили и настроили](https://kirill-zak.ru/2015/08/13/298 OpenSSL с поддержкой ГОСТ алгоритмов, можно сгенерировать приватный ключ и запроса на сертификат с использованием ГОСТ.

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

mkdir ~/.keys
cd ~/.keys

Теперь сгенерируем приватный ключ и запрос на сертификат.

openssl req -newkey gost2001 -pkeyopt paramset:A -out cert.csr -keyout key.pem

Параметры:

  • параметр gost2001 указывает на использование алгоритма ГОСТ Р 34.10-2001;
  • параметр -pkeyopt paramset:A устанавливает параметры OID для алгоритма шифрования.

Возможные варианты:

paramsetOID
Aid-GostR3410-2001-CryptoPro-A-ParamSet
Bid-GostR3410-2001-CryptoPro-B-ParamSet
Cid-GostR3410-2001-CryptoPro-C-ParamSet
XAid-GostR3410-2001-CryptoPro-XchA-ParamSet
XBid-GostR3410-2001-CryptoPro-XchB-ParamSet

Теперь необходимо ввести кодовую фразу на приватный ключ После этого, данные сертификата

Generating a 2048 bit GOST2001 private key
writing new private key to ‘key.pem’
Enter PEM pass phrase:
Verifying — Enter PEM pass phrase:
——
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Roga i Kopyta Ltd
Organizational Unit Name (eg, section) []:CEO
Common Name (e.g. server FQDN or YOUR name) []:user
Email Address []:user@mail.com

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Теперь файл с запросом на сертификат (cert.csr) можно отправить в УЦ. После получения сертификата, можно использовать приватный ключ для создания ЭЦП или шифрования данных.

Если необходимо создать самоподписной сертификат, то это можно сделать с помощью команды:

openssl x509 -req -in cert.csr -out cert.pem -signkey key.pem -days 365