Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2021(UTC) Сообщений: 7
|
Приветствую! Собрал docker контейнер на centos:7 с cprocsp, phpcades, php7.2. Добавил сертификат: Код:
/opt/cprocsp/bin/amd64/certmgr -inst -store umy -pfx -pin 12345678 -file test.pfx
Далее в php пытаюсь подписать XML файл: Код:
$signer = new CPSigner();
$signer->set_Certificate($cert);
$signer->set_KeyPin('12345678');
$signer->set_Options(2);
$sd = new CPSignedXml();
$sd->set_SignatureType(2);
$sd->set_Content($content);
$sd->set_DigestMethod('urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256');
$sd->set_SignatureMethod('urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256');
$signedXml = $sd->Sign($signer, "//*[local-name()='Signature' and position()=last()]");
Но получаю ошибку Код:
PHP Fatal error: Uncaught Exception: Internal error. (0x8009200B)
Подскажите, пожалуйста, в какую сторону искать проблему.
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,040 Сказал(а) «Спасибо»: 88 раз Поблагодарили: 226 раз в 213 постах
|
Добрый день! а шаблон можете показать? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2021(UTC) Сообщений: 7
|
Добрый день! Прикрепляю тестовый пример полностью. Пример был найден где-то тут на форуме и насколько я понял был рабочим у автора, в примере только подставил свои значения для сертификата. Но возможно работало со старыми версиями только. Чтобы отмести вариант с неправильным ключом сертификата проверял через консоль утилитой cryptcp с detached подписью - detached для файла генерировалась без ошибок. test.php (8kb) загружен 9 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,040 Сказал(а) «Спасибо»: 88 раз Поблагодарили: 226 раз в 213 постах
|
сменил критерий поиска сертификата и пин. успешно подписалось в докере. уточните у вас php-fpm? проверяете из браузера или же из консоли? у вас используется один root пользователь в докере? приведите вывод из контейнера /opt/cprocsp/bin/amd64/certmgr -list Отредактировано пользователем 30 июня 2021 г. 8:27:55(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2021(UTC) Сообщений: 7
|
Автор: Санчир Момолдаев сменил критерий поиска сертификата и пин. успешно подписалось в докере.
уточните у вас php-fpm? проверяете из браузера или же из консоли?
у вас используется один root пользователь в докере?
приведите вывод из контейнера /opt/cprocsp/bin/amd64/certmgr -list Добрый день! Сборка php с php-fpm, но все произвожу в консоли. Т.е. и добавляю сертификат в хранилище от юзера root в консоли и скрипт запускаю от этого же юзера в консоли. Других юзеров в системе нет. cprocsp версия 5.0.11998-6.x86_64 phpcades версия 2.0.14071-1.amd64 + плагин для php7.2, который тут где-то на форуме нашел. Вывод команды /opt/cprocsp/bin/amd64/certmgr -list: Код:
[root@78a0590ecaf5 src]# /opt/cprocsp/bin/amd64/certmgr -list
Certmgr 1.1 (c) "Crypto-Pro", 2007-2020.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=varnavskij@inbox.ru, CN=LgotaTO, OU=IT, O=DepTrans, L=Moscow, S=Moscow, C=RU
Serial : 0x120054E867FE1817113DB7B05A00010054E867
SHA1 Hash : 43c61aab3cfa693a0f4998cae8066b97a51bbf25
SubjKeyID : d5fd0e7f06a51883734aa83ab014eb10cef7b7da
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 13/06/2021 08:20:19 UTC
Not valid after : 13/09/2021 08:30:19 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\60e73bb6.000\3F9B
Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Provider Info : Provider Type: 80, Key Spec: 1, Flags: 0x0
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202(1).crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202(1).crl
Extended Key Usage : 1.3.6.1.5.5.7.3.3 Подписывание кода
2-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Serial : 0x37418882F539A5924AD44E3DE002EA3C
SHA1 Hash : cd321b87fdabb503829f88db68d893b59a7c5dd3
SubjKeyID : 4e833e1469efec5d7a952b5f11fe37321649552b
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 27/05/2019 07:24:26 UTC
Not valid after : 26/05/2024 07:34:05 UTC
PrivateKey Link : No
=============================================================================
[ErrorCode: 0x00000000]
В прикрепленном выше примере сертификат выбирается и отображается через printf, ошибка происходит именно при подписании. Я предположил, что возможно дело в том, что сертификат тестовый, попробовал то же самое с боевым (с другим хешом и пином), но результат получается тот же самый. Отредактировано пользователем 30 июня 2021 г. 11:24:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,040 Сказал(а) «Спасибо»: 88 раз Поблагодарили: 226 раз в 213 постах
|
а корневой устанавливали? certmgr -inst -store mroot -file cert.crt |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.06.2021(UTC) Сообщений: 7
|
Добавил, заработало! Спасибо большое!
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close