Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Установка ключа ГОСТ 2012 #31

Open
bbllek opened this issue May 29, 2020 · 8 comments
Open

Установка ключа ГОСТ 2012 #31

bbllek opened this issue May 29, 2020 · 8 comments

Comments

@bbllek
Copy link

bbllek commented May 29, 2020

Добрый день!
Подскажите пожалуйста, не могу подключить ключ для модуля авторизации.
До этого использовали сертификат RSA, с недавнего времени он перестал работать и нам было необходимо выполнить переход на ГОСТ 2012. Обновили Ваш модуль до последней версии.
Но возникла проблема с подключением нового ключа.
Когда был сертификат RSA использовали в конфиге:
'@certPath' => 'C:...\cert.cer',
'@privateKeyPath' => 'C:...\key '
cert.cer содержал -----BEGIN/END CERTIFICATE-----
А key содержал -----BEGIN/END ENCRYPTED PRIVATE KEY-----
Сейчас мы с помощью "OpenSSL 1.1.1g + gost engine + get-cpcert" из нашего сертификата ГОСТ 2012 получили файл ".PEM":
из него мы извлекли ".CER" содержащий -----BEGIN/END CERTIFICATE-----
и незашифрованный закрытый ключ содержащий -----BEGIN/END PRIVATE KEY-----.
Собственно вопрос, каким образом нам подключить наш private key или каким алгоритмом его необходимо зашифровать, чтобы он соответствовал требованиям Вашего модуля авторизации?
Спасибо.

@fr05t1k
Copy link
Owner

fr05t1k commented May 29, 2020

Какую версию используете? Если 2.2.0, то попробуйте 2.1.1.

@bbllek
Copy link
Author

bbllek commented May 29, 2020

Только что сменили версию на 2.1.1. Ошибка осталась.
dhuntJJF_eU

@fr05t1k
Copy link
Owner

fr05t1k commented May 29, 2020

Проблема с открытим приватного ключа https://www.php.net/manual/en/function.openssl-pkey-get-private.php#refsect1-function.openssl-pkey-get-private-returnvalues

Попробуйте вызвать https://www.php.net/manual/en/function.openssl-error-string.php после ошибки.

@bbllek
Copy link
Author

bbllek commented May 29, 2020

openssl_error_string() вернула следующее:
"error:0606F076:digital envelope routines:EVP_PKCS82PKEY:unsupported private key algorithm"

@fr05t1k
Copy link
Owner

fr05t1k commented Jun 1, 2020

Попробуйте воспользоваться Esia\Signer\CliSignerPKCS7 вместо Esia\Signer\SignerPKCS7 и подписывать через CLI.

@bbllek
Copy link
Author

bbllek commented Jun 5, 2020

Спасибо!
Мы попробовали вначале обновить версию openssl и теперь выдало ошибку:
OpenSSL failure on encryption: error:0907B00D:PEM routines:PEM_read_bio_PrivateKey:ASN1 lib

@paulish
Copy link
Contributor

paulish commented Jun 8, 2020

Извлечь ключи можно при помощи проекта для NodeJS:
https://github.com/garex/nodejs-gost-crypto

@eternal097
Copy link

Извлечь ключи можно при помощи проекта для NodeJS:
https://github.com/garex/nodejs-gost-crypto

Я извлек ключи путем переноса всех 6 файлов с ключами в папку bin скрипта и запустив из папки команду "node export-cryptopro-key.js".
Скрипт вернул мне ключ и я записал его в файл с форматом .key.
Далее я использую этот ключ и сертификат в контейнере докера gost_php, но при попытке запуска скрипта я получаю ошибку "error" => "Can not read private key ./certs/private.key"
Что может быть не так ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants