fr05t1k / esia

Компонент для авторизации на портале "Госуслуги" (ЕСИА)
http://fr05t1k.github.io/esia
142 stars 68 forks source link

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

Open bbllek opened 4 years ago

bbllek commented 4 years ago

Добрый день! Подскажите пожалуйста, не могу подключить ключ для модуля авторизации. До этого использовали сертификат 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 commented 4 years ago

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

bbllek commented 4 years ago

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

fr05t1k commented 4 years ago

Проблема с открытим приватного ключа 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 commented 4 years ago

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

fr05t1k commented 4 years ago

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

bbllek commented 4 years ago

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

paulish commented 4 years ago

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

eternal097 commented 3 years ago

Извлечь ключи можно при помощи проекта для 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" Что может быть не так ?