Статус: Новичок
Группы: Участники
Зарегистрирован: 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
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,946   Сказал «Спасибо»: 599 раз Поблагодарили: 2337 раз в 1834 постах
|
Здравствуйте.
1) по ссылке, что нашли - есть пример создания и проверки подписи. В переменной sd - base64 - достаточно декодировать и записать в файл, на выходе будет бинарный файл.
2) стандартная ошибка - достаточно ввести в поисковик. Требуется установить корневой сертификат в доверенные корневые, чтобы строилась цепочка от сертификата подписанта.
3) подпись в ГОСТ не расшифровывается... Указанный сертификат - самоподписанный на 1 год (значит его нужно в root установить тоже), при этом в личном хранилище - он почему-то установлен без ссылки на контейнер. PrivateKey Link : No
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,946   Сказал «Спасибо»: 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 |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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 не выходит - пишет что такого нет.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,946   Сказал «Спасибо»: 599 раз Поблагодарили: 2337 раз в 1834 постах
|
Автор: Вячеслав Л  Вопрос - а это нормально что даже если я модифицирую зашифрованную строку (допустим добавляю символы в её конце) - всё равно VerifyCades не вызывает исключения? какую зашифрованную строку? base64 это кодирование, а не шифрование. Добавление "мусора" после информации - не влияет на внутренний формат (CMS - ASN.1 - там прописаны размеры структур и где что хранится)  Snimok ehkrana ot 2025-09-30 13-03-15.png (43kb) загружен 5 раз(а). |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,946   Сказал «Спасибо»: 599 раз Поблагодарили: 2337 раз в 1834 постах
|
Автор: Вячеслав Л  И немного оффтоп - а в рамках этой утилиты есть возможность расшифровать подписанный файл? В частности интересует XML, вижу есть класс EnvelopedXML в документации, но подключить его в php не выходит - пишет что такого нет. на данный момент нет, но можно создать запрос (issue) на добавление: https://github.com/CryptoPro/phpcades |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close