ekapusta / oauth2-esia

Authenticate in ESIA and get authenticated individual personal information
MIT License
67 stars 48 forks source link

Как конвертировать ключи (gost2012) #13

Closed demoniz closed 3 years ago

demoniz commented 3 years ago

Приветствую! Прошу помощи, подскажите как правильно конвертировать гостовский сертификат для работы с данным расширением и извлечь из него публичный ключ. Используем докер контейнер https://github.com/rnixik/docker-openssl-gost/tree/master/php-fpm-gost

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

Пробуем использовать продуктивный сертификат, его через экспорт windows (мастер экспорта сертификатов) сохраняем в "Файлы X.509(.CER) в кодировке Base-64".

Далее извлекаем ключ с помощью команды: for CERT in *.cer; do openssl x509 -engine gost -noout -pubkey -in $CERT -out ${CERT%.*}.public.key; done Указываем пути до файлов, пробуем пройти авторизацию и получаем Fatal error: Uncaught RuntimeException: Operation failed with code#3 as of: unable to load signing key file 140678649394304:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:691:Expecting: ANY PRIVATE KEY unable to write 'random state'

Подскажите в чем может быть проблема.

garex commented 3 years ago

pem/der


Alexander Ustimenko +7 (952) 918-02-20

пн, 5 окт. 2020 г. в 21:30, demoniz notifications@github.com:

Приветствую! Прошу помощи, подскажите как правильно конвертировать гостовский сертификат для работы с данным расширением и извлечь из него публичный ключ. Используем докер контейнер https://github.com/rnixik/docker-openssl-gost/tree/master/php-fpm-gost

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

Пробуем использовать продуктивный сертификат, его через экспорт windows (мастер экспорта сертификатов) сохраняем в "Файлы X.509(.CER) в кодировке Base-64".

Далее извлекаем ключ с помощью команды: for CERT in .cer; do openssl x509 -engine gost -noout -pubkey -in $CERT -out ${CERT%.}.public.key; done Указываем пути до файлов, пробуем пройти авторизацию и получаем Fatal error: Uncaught RuntimeException: Operation failed with code#3 as of: unable to load signing key file 140678649394304:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:691:Expecting: ANY PRIVATE KEY unable to write 'random state'

Подскажите в чем может быть проблема.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ekapusta/oauth2-esia/issues/13, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAATBHOKKQNIYTQPJG5EP4TSJHKARANCNFSM4SEYR3EQ .

demoniz commented 3 years ago

Прошу прощения, не понял. DER на сколько я понимаю является двоичным форматом сертификата, а тут судя по примерам используются не двоичные.

garex commented 3 years ago

Вы судя по всему экспортируете в бинарном формате.

man openssl x509


Alexander Ustimenko +7 (952) 918-02-20

пн, 5 окт. 2020 г. в 21:39, demoniz notifications@github.com:

Прошу прощения, не понял. DER на сколько я понимаю является двоичным форматом сертификата, а тут судя по примерам используются не двоичные.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ekapusta/oauth2-esia/issues/13#issuecomment-703675749, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAATBHOM74IMU27CXYZZ2G3SJHLA5ANCNFSM4SEYR3EQ .

demoniz commented 3 years ago

Подскажите как надо? Имеем продовский сертификат в формате .sert с алгоритмом подписи ГОСТ 2012. Так же есть 6 ключей (header.key, masks.key, masks2.key, name.key, primary.key, primary2.key). Какие дальнейшие действия должны быть?

garex commented 3 years ago

Ааа... Тогда вам сюда

https://github.com/garex/nodejs-gost-crypto


Alexander Ustimenko +7 (952) 918-02-20

пн, 5 окт. 2020 г. в 21:55, demoniz notifications@github.com:

Подскажите как надо? Имеем продовский сертификат в формате .sert с алгоритмом подписи ГОСТ 2012. Так же есть 6 ключей (header.key, masks.key, masks2.key, name.key, primary.key, primary2.key). Какие дальнейшие действия должны быть?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ekapusta/oauth2-esia/issues/13#issuecomment-703685956, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAATBHOKYTXFWJ4QMP5C2QDSJHM5XANCNFSM4SEYR3EQ .

demoniz commented 3 years ago

Если не сложно, подскажите как это использовать, node установлен. А точнее запускать. Зависимости установлены.

garex commented 3 years ago

Cами пробуйте, я уже давно не работал с этой штукой.


Alexander Ustimenko +7 (952) 918-02-20

пн, 5 окт. 2020 г. в 22:24, demoniz notifications@github.com:

Если не сложно, подскажите как это использовать, node установлен

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ekapusta/oauth2-esia/issues/13#issuecomment-703704622, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAATBHM5M2STZQBIWFEEGDLSJHQKZANCNFSM4SEYR3EQ .

demoniz commented 3 years ago

@garex подскажите, а вы проверяли работу в продакшене? У нас почему то постоянно вылезает ошибка "ESIA-007005: Система-клиент не имеет права запрашивать получение маркера доступа таким методом". Хотя тот же код отлично работает с вашими тестовыми данными. Ключи в итоге мы портировали с помощью покупной P12FromGostCSP в pfx.

Далее конвертировали openssl pkcs12 -in p12.pfx -nokeys -out p12.crt и openssl pkcs12 -in p12.pfx -nocerts -out p12.pem -nodes

Может быть конечно и клиент что то с настройкой напутал....

garex commented 3 years ago

Это скоупы. Вы хотите больше чем можно.

пт, 9 окт. 2020 г., 19:04 demoniz notifications@github.com:

@garex https://github.com/garex подскажите, а вы проверяли работу в продакшене? У нас почему то постоянно вылезает ошибка "ESIA-007005: Система-клиент не имеет права запрашивать получение маркера доступа таким методом". Хотя тот же код отлично работает с вашими тестовыми данными. Ключи в итоге мы портировали с помощью покупной P12FromGostCSP в pfx.

Далее конвертировали openssl pkcs12 -in p12.pfx -nokeys -out p12.crt openssl pkcs12 -in p12.pfx -nocerts -out p12.pem -nodes

Может быть конечно и клиент что то с настройкой напутал....

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ekapusta/oauth2-esia/issues/13#issuecomment-706141392, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAATBHOO5QDLRXEPGPNRMQ3SJ335BANCNFSM4SEYR3EQ .

demoniz commented 3 years ago

Я тоже так думал, но уже указаны только 2 'openid', 'fullname'

garex commented 3 years ago

Мб минком не включил систему? Или алгоритм не тот выбран.

пт, 9 окт. 2020 г., 19:07 demoniz notifications@github.com:

Я тоже так думал, но уже указаны только 2 'openid', 'fullname'

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ekapusta/oauth2-esia/issues/13#issuecomment-706142771, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAATBHOUCSKIALLTLFSHV73SJ34J3ANCNFSM4SEYR3EQ .

demoniz commented 3 years ago

Алгоритм стоит верный. А вот как проверить включил он ее или нет это вопрос....

nucleargen commented 3 years ago

включил = успешно закрыл запрос на подключение ИС к боевому контуру.

Вот так вот не надо: openid, fullname ! Надо вот тааак: fullname, id_doc (или просто fullname) Понятно?

garex commented 3 years ago

У нас вот так работает: 'defaultScopes' => ['openid', 'fullname', 'id_doc',]

demoniz commented 3 years ago

@nucleargen когда проблема в scope он будет писать ESIA-007019 noGrants

yatakrad commented 1 year ago

@garex добрый день!
Не подскажите , использую https://github.com/garex/nodejs-gost-crypto , создал папку с 6 файлами key которые мне выдали , далее запуск , чтобы преобразовать в pem и у меня выходит ошибка Error: Incorrect fp nodejs-gost-crypto-nodefy\lib\gostKeys.js:959:27м

В чем может быть проблема ?