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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Вячеслав Л  
#1 Оставлено : 29 сентября 2025 г. 18:26:31(UTC)
Вячеслав Л

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

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

Добрый день, возник вопрос по установке подписи формата CMS/PKCS#7, кодировка DER

Развернул библиотеку для PHP https://docs.cryptopro.ru/cades/phpcades , добавил через консоль сертификат, но наткнулся на несколько тупиков:

1. Каким образом указывается "CMS/PKCS#7, кодировка DER" ? Не нашёл в документации в явном виде как это указать, хотя в описании про этот формат упоминается
2. При попытке подписать xml документ получаю ошибку "A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. (0x800B0109)"
3. При попытке расшифровать подпись, которая была сформирована плагином - получаю ошибку "Internal error. (0x80070490)"

По исходным данным:
Сертификат был выпущен в КриптоАРМ, в хранилище выводится

Код:
/opt/cprocsp/bin/amd64/certmgr -list           
Certmgr Ver:5.0.13000 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer              : C=RU, CN=Тестовый сертификат
Subject             : C=RU, CN=Тестовый сертификат
Serial              : 0x2312511784143470
SHA1 Thumbprint     : e018d081377c68019973ba7b984b6131f3e865e3
SubjectKeyID        : 6d4ec2d8a8c4b7f1aea188537b9a6e5d86cabc2f
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before    : 26/09/2025 09:31:49 UTC
Not valid after     : 26/09/2026 09:31:49 UTC
PrivateKey Link     : No
Extended Key Usage  : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
                      1.3.6.1.5.5.7.3.4 Защищенная электронная почта
=============================================================================

[ErrorCode: 0x00000000]


Код проверки/подписания скопирован с теста https://github.com/Crypt.../main/test_extension.php
Offline Андрей *  
#2 Оставлено : 29 сентября 2025 г. 18:43:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 599 раз
Поблагодарили: 2337 раз в 1834 постах
Здравствуйте.

1) по ссылке, что нашли - есть пример создания и проверки подписи.
В переменной sd - base64 - достаточно декодировать и записать в файл, на выходе будет бинарный файл.

2) стандартная ошибка - достаточно ввести в поисковик.
Требуется установить корневой сертификат в доверенные корневые, чтобы строилась цепочка от сертификата подписанта.

3) подпись в ГОСТ не расшифровывается...
Указанный сертификат - самоподписанный на 1 год (значит его нужно в root установить тоже),
при этом в личном хранилище - он почему-то установлен без ссылки на контейнер.
PrivateKey Link : No

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 29 сентября 2025 г. 18:48:07(UTC)
Андрей *

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

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

Сказал «Спасибо»: 599 раз
Поблагодарили: 2337 раз в 1834 постах
по коду ошибки при проверке ЭП:
0x80070490 - элемент не найден.

Например, попытка проверить ЭП как CAdES Xlong1, а на входе лишь CAdES BES.

Внимательно посмотрите описание переменных и значения по умолчанию.

Смотреть можно в разделе для плагина:

oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);

oSignedData.VerifyCades(sSignedMessage, cadesplugin.CADESCOM_CADES_BES, true);


Описание:
VerifyCades



Техническую поддержку оказываем тут
Наша база знаний
Offline Вячеслав Л  
#4 Оставлено : 30 сентября 2025 г. 10:26:09(UTC)
Вячеслав Л

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

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

Спасибо за быстрый ответ!

Внёс ряд корректировок:
1. Установил сертификат как корневой через certmgr -inst -store uRoot -file <путь к файлу>.cer
2. Для проверки скорректировал параметр "тип подписи" для VerifyCades в соответствии с https://docs.cryptopro.r...enum/cadescom_cades_type

Верификация подписи работает и test_extention.php проходит успешно

Вопрос - а это нормально что даже если я модифицирую зашифрованную строку (допустим добавляю символы в её конце) - всё равно VerifyCades не вызывает исключения?

И немного оффтоп - а в рамках этой утилиты есть возможность расшифровать подписанный файл? В частности интересует XML, вижу есть класс EnvelopedXML в документации, но подключить его в php не выходит - пишет что такого нет.
Offline Андрей *  
#5 Оставлено : 30 сентября 2025 г. 12:06:33(UTC)
Андрей *

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

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

Сказал «Спасибо»: 599 раз
Поблагодарили: 2337 раз в 1834 постах
Автор: Вячеслав Л Перейти к цитате

Вопрос - а это нормально что даже если я модифицирую зашифрованную строку (допустим добавляю символы в её конце) - всё равно VerifyCades не вызывает исключения?


какую зашифрованную строку?
base64 это кодирование, а не шифрование.

Добавление "мусора" после информации - не влияет на внутренний формат (CMS - ASN.1 - там прописаны размеры структур и где что хранится)

Snimok ehkrana ot 2025-09-30 13-03-15.png (43kb) загружен 5 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 30 сентября 2025 г. 14:36:18(UTC)
Андрей *

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

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

Сказал «Спасибо»: 599 раз
Поблагодарили: 2337 раз в 1834 постах
Автор: Вячеслав Л Перейти к цитате

И немного оффтоп - а в рамках этой утилиты есть возможность расшифровать подписанный файл? В частности интересует XML, вижу есть класс EnvelopedXML в документации, но подключить его в php не выходит - пишет что такого нет.


на данный момент нет, но можно создать запрос (issue) на добавление:
https://github.com/CryptoPro/phpcades
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (5)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.