четверг, 12 июля 2012 г.

openssl, ГОСТ (gost) и мои кривые руки. Часть 2

После того, как мне удалось с грехом пополам водрузить openssl+GOST перешел к самому главному: сгенерировать пару ключ+сертификат.


А как? Документация как факт отсутствует.


После долгих поисков (быстро я наткнулся на генерацию ключа через ruToken) наткнулся на документ
http://cvs.openssl.org/fileview?f=openssl/engines/ccgost/README.gost&r=HEAD
В нем в явном виде ПРАВИЛЬНО показано (как собственно методом проб и ошибок я достиг самостоятельно), как настраивать openssl.conf
При том что в http://www.cryptocom.ru/products/openssl-1-config-ru.html в явном виде допущена ошибка к приводящая к тому что openssl работать не будет. Что же творится на белом свете?!

Так вот, в этом документе без объяснений описано как создавать ключь и сертификат по ГОСТу:
openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out seckey.pem


Ну что? Будем пытаться и пробовать :) 

---8<---

md ca_root_private
md ca_root_public


C:\openssl\bin\openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -out ca_root_private/superplat_ca_root.pem
C:\openssl\bin\openssl req -new -x509 -days 99999 -key ca_root_private/superplat_ca_root.pem -out ca_root_public/superplat_ca_root.cer -subj "/C=RU/ST=Russia/L=Moscow/O=SuperPlat/OU=SuperPlat CA/CN=SuperPlat CA Root"
C:\openssl\bin\openssl pkcs12 -export -inkey ca_root_private/superplat_ca_root.pem -in ca_root_public/superplat_ca_root.cer -keypbe gost89 -certpbe gost89 -macalg md_gost94 -out ca_root_private/superplat_ca_root.p12 -passout pass:654321
---8<---




---8<---


set CA_num=01


md ca_%CA_num%_private
md ca_%CA_num%_public


C:\openssl\bin\openssl.exe req -newkey gost2001 -pkeyopt paramset:A -keyout ca_%CA_num%_private/superplat_ca_%CA_num%.pem -nodes -out ca_%CA_num%_public/superplat_ca_%CA_num%.csr -subj "/C=RU/ST=Russia/L=Moscow/O=SuperPlat/OU=SuperPlat CA/CN=SuperPlat CA %CA_num%"
C:\openssl\bin\openssl ca -policy policy_anything -days 365 -keyfile ca_root_private/superplat_ca_root.pem -cert ca_root_public/superplat_ca_root.cer -in ca_%CA_num%_public/superplat_ca_%CA_num%.csr -out ca_%CA_num%_public/superplat_ca_%CA_num%.cer
C:\openssl\bin\openssl pkcs12 -export -inkey ca_%CA_num%_private/superplat_ca_%CA_num%.pem -in ca_%CA_num%_public/superplat_ca_%CA_num%.cer -keypbe gost89 -certpbe gost89 -macalg md_gost94 -out ca_%CA_num%_private/superplat_ca_%CA_num%.p12 -passout pass:654321
---8<---






---8<---


set CA_num=01


set TermNum=0000001
set CertName=SuperTerm%TermNum%


md clients_private
md clients_public


C:\openssl\bin\openssl.exe req -newkey gost2001 -pkeyopt paramset:A -keyout clients_private/%CertName%.pem -nodes -out clients_public/%CertName%.csr -subj "/C=RU/ST=Russia/L=Moscow/O=SuperPlat/OU=SuperPlat Terminals/CN=%CertName%"
C:\openssl\bin\openssl ca -policy policy_anything -days 365 -keyfile ca_%CA_num%_private/superplat_ca_%CA_num%.pem -cert ca_%CA_num%_public/superplat_ca_%CA_num%.cer -in clients_public/%CertName%.csr -out clients_public/%CertName%.cer
C:\openssl\bin\openssl pkcs12 -export -inkey clients_private/%CertName%.pem -in clients_public/%CertName%.cer -keypbe gost89 -certpbe gost89 -macalg md_gost94 -out clients_private/%CertName%.p12 -passout pass:654321
---8<---




Ключи то получили... но.... как всегда грабли.
Как засунуть теперь p12 в Windows?
Пойду искать CSP, который сможет корректно прожевать p12 GOST, который был сформирован openssl



PS:
Вот эти команды НЕ работают на 0.9.8e МагПро, а только на 1.0.1c.
Как следствие, что будем делать с последующей сертификацией я даже и не представляю :(((





2 комментария:

  1. Пойду искать CSP, который сможет корректно прожевать p12 GOST, который был сформирован openssl

    Используйте ЛИССИ-CSP:

    http://soft.lissi.ru/products/skzi/lissi-csp/

    и проблем не будет

    ОтветитьУдалить