Недавно на работе возникла необходимость настроить генерацию ключевой пары и запроса на сертификат x.509 с помощью OpenSSL и алогритмов ГОСТ. После изучения материала по данной теме было найдено определенное решение и построен соответсвующий алгоритм действий, который и хотелось бы описать.

Настройка OpenSSL

Итак для генерации ключей по ГОСТ у OpenSSL идет библиотека libgost.so, которая поставляется с OpenSSL, не не входит в конфигурацию по умолчанию. Подробнее можно прочитать здесь. В кратце порядок дествий следующий:

Расширение OpenSSL сертификата дополнительными полями:

В файле openssl.conf нужно:

Основные команды по работе с OpenSSL:

Сгенерировать закрытый ключ c помощью ГОСТ:

openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out file.key

Вытащить закрытый ключ из полученного файла (без первых 3-х байт):

openssl asn1parse -in file.key -offset 35 -out key

Генерируем запрос на сертификат:

openssl req -new -key file.key -subj "сабжект" -out file.req

Для самоподписанного сертификатв выполнить для запроса команду:

openssl x509 -req -days 365 -in file.req -signkey test.key -out cert.cer

Посмотреть сертификат можно:

openssl x509 -in cert.cer -noout -text

Выгрузить в контейнер PKCS#12:

openssl pkcs12 -export -out test.p12 -in cert.cer -inkey test.key