Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline orbdev  
#1 Оставлено : 23 июня 2021 г. 23:48:24(UTC)
orbdev

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)


Подскажите, пожалуйста, в какую сторону искать проблему.
Offline Санчир Момолдаев  
#2 Оставлено : 26 июня 2021 г. 18:24:57(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,038
Российская Федерация

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
Добрый день!
а шаблон можете показать?
Техническую поддержку оказываем тут
Наша база знаний
Offline orbdev  
#3 Оставлено : 28 июня 2021 г. 11:49:01(UTC)
orbdev

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.06.2021(UTC)
Сообщений: 7
Российская Федерация

Добрый день! Прикрепляю тестовый пример полностью. Пример был найден где-то тут на форуме и насколько я понял был рабочим у автора, в примере только подставил свои значения для сертификата. Но возможно работало со старыми версиями только.

Чтобы отмести вариант с неправильным ключом сертификата проверял через консоль утилитой cryptcp с detached подписью - detached для файла генерировалась без ошибок.

test.php (8kb) загружен 9 раз(а).
Offline Санчир Момолдаев  
#4 Оставлено : 30 июня 2021 г. 8:26:05(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,038
Российская Федерация

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
сменил критерий поиска сертификата и пин. успешно подписалось в докере.

уточните у вас php-fpm? проверяете из браузера или же из консоли?

у вас используется один root пользователь в докере?

приведите вывод из контейнера
/opt/cprocsp/bin/amd64/certmgr -list

Отредактировано пользователем 30 июня 2021 г. 8:27:55(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline orbdev  
#5 Оставлено : 30 июня 2021 г. 11:23:42(UTC)
orbdev

Статус: Новичок

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Санчир Момолдаев  
#6 Оставлено : 30 июня 2021 г. 12:26:59(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,038
Российская Федерация

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
а корневой устанавливали?
Цитата:
CA cert URL : http://testca.cryptopro..../test-ca-2014_CRYPTO-PRO Test Center 2(1).crt

certmgr -inst -store mroot -file cert.crt
Техническую поддержку оказываем тут
Наша база знаний
Offline orbdev  
#7 Оставлено : 30 июня 2021 г. 12:36:23(UTC)
orbdev

Статус: Новичок

Группы: Участники
Зарегистрирован: 21.06.2021(UTC)
Сообщений: 7
Российская Федерация

Добавил, заработало! Спасибо большое!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.