Open fluffycondor opened 3 years ago
Привет! Я добавил возможности указвать флаги для openssl_pkcs7_sign (https://www.php.net/manual/en/openssl.pkcs7.flags.php).
Попробуй добавить флаг $signer->addPKCS7Flag(PKCS7_NOSIGS)
или $signer->addPKCS7Flag(PKCS7_NOVERIFY)
Увы, эффекта не даёт, варнинг на месте.
Даже
PKCS7_NOVERIFY | PKCS7_NOATTR | PKCS7_NOCERTS | PKCS7_NOCHAIN | PKCS7_NOINTERN
А это секретные ключи? Можешь поделиться?
Я не думаю, что дело в ключах. Скорее всего, дело в связке определенных версий PHP + openssl (у нас это PHP 7.3.19 и OpenSSL 1.1.1d). Глубже я не компетентен - ГОСТовское шифрование настраивал наш девопс с бубнами и матами, из-за этого у нас и лок на PHP 7.3, на 7.4 что-то не заводится. Вот рандомный тестовый серт + ключ, с ним у нас проблема воспроизводится. fam002.zip
Я не встретил проблем с сетификатом и ключем которые в репозитории на: PHP 7.3.19 (cli) (built: Jun 11 2020 19:52:31) ( NTS ) OpenSSL 1.1.1d 10 Sep 2019
С теми что в архиве не завелось с ошибкой: error:0609E09C:digital envelope routines:pkey_set_type:unsupported algorithm
Как вариант можете использовать CLI версию:
А если добавить в конфиг опцию supressPKCS7Warnings и по ее наличию оборачивать openssl_pkcs7_sign в
$oldErrorReportingLevel = error_reporting(E_ALL & ~E_WARNING); // выключает только варнинги
$signResult = openssl_pkcs7_sign(
$messageFile,
$signFile,
$cert,
$privateKey,
[]
);
error_reporting($oldErrorReportingLevel);
Добрый день.
PHP 7.3.19 fr05t1k/esia 2.3.1
Так как используемый нами фреймворк конвертит ворнинги в эксепшны, крашимся в SignerPKCS7 на этой строке:
с сообщением
Warning: openssl_pkcs7_sign(): key type not supported in this PHP build!
Используем нешифрованный приватный ключ.Приходится оборачивать buildUrl() такими некрасивыми вещами:
Таким образом всё великолепно работает.
Возможно ли как-то обработать этот ворнинг на уровне вашей библиотеки?