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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Терентий  
#1 Оставлено : 20 мая 2022 г. 14:44:09(UTC)
Терентий

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

Группы: Участники
Зарегистрирован: 20.05.2022(UTC)
Сообщений: 6

Обращаюсь к КриптоПро через технологию COM из PHP.

В качестве образца взял пример с этого же сайта


Код:

// Создаю объект Store и открываю его
$oStore = new com("CAdESCOM.Store");
$oStore->Open(2);

// Перебираю хранилище и нахожу необходимый сертификат
foreach ($oStore->Certificates as $fCert) {
    if (emfazaCertSerial == $fCert->SerialNumber) {
        $oCert = $fCert;
        break;
    }
}

// Создаю объект CPSigner и назначаю ему сертификат
$oSigner = new com("CAdESCOM.CPSigner");
$oSigner->Certificate = $oCert;


// Создаю объект CadesSignedData и заполняю контент
$oSignedData = new com('CAdESCOM.CadesSignedData');
$oSignedData->Content = 'Some very significant message';

// Пытаюсь получить подпись
$sSignedData = $oSignedData->Sign($oSigner, False);



На выходе получаю ошибку:
Код:

[Fri May 20 14:40:51 2022] PHP Fatal error:  Uncaught com_exception: <b>Source:</b> CAdESCOM.CadesSignedData.1<br/><b>Description:</b>     ASN1. in E:\www\soap\client.php:30
Stack trace:
#0 E:\www\soap\client.php(30): com->Sign(Object(com), false)
#1 {main}
  thrown in E:\www\soap\client.php on line 30
[Fri May 20 14:40:51 2022] 127.0.0.1:62820 [200]: GET /client.php - Uncaught com_exception: <b>Source:</b> CAdESCOM.CadesSignedData.1<br/><b>Description:</b>     ASN1. in E:\www\soap\client.php:30
Stack trace:
#0 E:\www\soap\client.php(30): com->Sign(Object(com), false)
#1 {main}
  thrown in E:\www\soap\client.php on line 30
[Fri May 20 14:40:51 2022] 127.0.0.1:62820 Closing



Поиск по интернету не помог в поиске причины этой ошибки.

Подскажите, что я не учёл, спасибо!
Offline Андрей *  
#2 Оставлено : 20 мая 2022 г. 15:04:22(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Автор: Терентий Перейти к цитате
Обращаюсь к КриптоПро через технологию COM из PHP.


на Windows?


https://docs.cryptopro.r...hpcades/phpcades-samples
Этот пример смотрели?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 20 мая 2022 г. 15:05:07(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Цитата:
// Перебираю хранилище и нахожу необходимый сертификат


а если "не нахожу?"
Техническую поддержку оказываем тут
Наша база знаний
Offline Терентий  
#4 Оставлено : 23 мая 2022 г. 10:37:22(UTC)
Терентий

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

Группы: Участники
Зарегистрирован: 20.05.2022(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате

на Windows?

Безусловно.

Автор: Андрей * Перейти к цитате

https://docs.cryptopro.r...hpcades/phpcades-samples
Этот пример смотрели?

Да, смотрел, но это решение не применимо, т.к. его возможно использовать только на UBUNTU.
Offline Терентий  
#5 Оставлено : 23 мая 2022 г. 10:38:26(UTC)
Терентий

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

Группы: Участники
Зарегистрирован: 20.05.2022(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате
Цитата:
// Перебираю хранилище и нахожу необходимый сертификат


а если "не нахожу?"


Это частность, не обязательная для прототипа. Код вообще не работает по непонятной причине.
Offline Андрей *  
#6 Оставлено : 23 мая 2022 г. 10:52:28(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Тогда выведите информацию из найденного oCert
+ есть ли ссылка на закрытый ключ
+ под какой учётной записью запускается процесс и дали ли права на контейнер (через оснастку сертификатов можно посмотреть права)?

Сертификаты (локальный компьютер)->Личное->Сертификаты->Все задачи->Управление закрытыми ключами

Как в базе знаний: https://support.cryptopr...sluzhbkh-windows-iis-etc
Техническую поддержку оказываем тут
Наша база знаний
Offline Терентий  
#7 Оставлено : 23 мая 2022 г. 16:11:11(UTC)
Терентий

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

Группы: Участники
Зарегистрирован: 20.05.2022(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате
Тогда выведите информацию из найденного oCert

Не нашёл документации по этому объекту. Не знаю, какие поля и методы у него есть, к которым следует обратиться.

Автор: Андрей * Перейти к цитате

+ под какой учётной записью запускается процесс

Под администратором.

Автор: Андрей * Перейти к цитате
и дали ли права на контейнер (через оснастку сертификатов можно посмотреть права)?


Ушёл изучать вопрос.

Ещё один момент. Запустил VBS, скопировав пример отсюда

Заменив sSerialNumber и sTSAAddress на свои значения.

В результате выполнения получаю ошибку:Встречено неверное значение тега ASN1 Код 8009310B, Источник: CAdESCOM.CadesSignedData.1

Собственно это вызов
sSignedData = oSignedData.Sign(oSigner, False)


Что полностью соответствует моему вызову на PHP: $sSignedData = $oSignedData->Sign($oSigner, False);

Возможно, это сообщение как-то может локализовать проблему? Пойду погуглю про эту ошибку.

Offline Андрей *  
#8 Оставлено : 23 мая 2022 г. 16:34:59(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Автор: Терентий Перейти к цитате
Автор: Андрей * Перейти к цитате
Тогда выведите информацию из найденного oCert

Не нашёл документации по этому объекту. Не знаю, какие поля и методы у него есть, к которым следует обратиться.



https://docs.cryptopro.ru/cades/reference/cadescom

https://docs.cryptopro.r...scom_class/cpcertificate

Техническую поддержку оказываем тут
Наша база знаний
Offline Терентий  
#9 Оставлено : 24 мая 2022 г. 16:48:52(UTC)
Терентий

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

Группы: Участники
Зарегистрирован: 20.05.2022(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате
https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_class/cpcertificate


О как! Не ожидал, что элемент из коллекции Certificates должен называться CPCertificate.

Цитата:
есть ли ссылка на закрытый ключ


var_dump($oCert->HasPrivateKey()) возвращает true.

var_dump($oCert->PrivateKey) возвращает object(variant)

var_dump($oCert->PrivateKey->ContainerName) возвращает правильное имя контейнера.

Так что, видимо, ссылка на закрытый ключ есть.

Цитата:
и дали ли права на контейнер

Права на контейнер есть. Все проверки пройдены.

Но вызов $sSignedData = $oSignedData->Sign($oSigner, False) продолжает приводить к ошибке.
Offline Андрей *  
#10 Оставлено : 24 мая 2022 г. 17:07:12(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Автор: Терентий Перейти к цитате
Автор: Андрей * Перейти к цитате
https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_class/cpcertificate


О как! Не ожидал, что элемент из коллекции Certificates должен называться CPCertificate.


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