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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline GTAlex  
#1 Оставлено : 29 декабря 2021 г. 8:18:39(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 19 раз
Приветствую коллеги!

Есть задача проверки файла + его подписи на веб сервере (centos php 7).

Установил расширение phpcades ...

Модуль подключился, чего с ним делать дальше - большой вопрос!

Где документация на модуль - какие объекты создавать, методы, параметры и т.д. и т.п.?!

Единственный пример использования из документации "не взлетел" - при запуске даёт ошибку:
Cannot find object or property. (0x80092004)

Отредактировано пользователем 29 декабря 2021 г. 8:19:51(UTC)  | Причина: Не указана

Offline two_oceans  
#2 Оставлено : 29 декабря 2021 г. 10:27:06(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,536
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 105 раз
Поблагодарили: 375 раз в 354 постах
Добрый день.
Там же все и указано. Приблизительно все то же что и для плагина (точнее интерфейса COM ЭЦП SDK), только пристроен мостик в синтаксисе php.
https://docs.cryptopro.r.../cadescom/cadescom_class

Пример https://docs.cryptopro.r...hpcades/phpcades-samples ищет в хранилище uMy (Личные) сертификат с именем "test"
"Cannot find object or property. (0x80092004)" - это означает, что не находит чего-то, например сертификата с именем "test". Правда должно быть более осмысленное описание что сертификат не нашелся. Подстройте под себя имя сертификата или сделайте поиск по отпечатку или номеру сертификата (как в примере для JS - перечисление сертификатов и сравнение номера). Еще я бы убрал (закомментировал) для начальных тестов, потом разберетесь нужно ли Вам.
Код:
$signer->set_TSAAddress($tsp_addres);

Отредактировано пользователем 29 декабря 2021 г. 10:33:08(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
GTAlex оставлено 11.01.2022(UTC)
Offline GTAlex  
#3 Оставлено : 29 декабря 2021 г. 10:44:44(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 19 раз
А рабочие примеры на PHP где нибудь можно посмотреть?

Очень интересует
проверка файла с его подписью.
Offline GTAlex  
#4 Оставлено : 11 января 2022 г. 5:11:26(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 19 раз
Автор: GTAlex Перейти к цитате
А рабочие примеры на PHP где нибудь можно посмотреть?

Очень интересует
проверка файла с его подписью.


на сервере проверяю подпись через командную строку - работает

/opt/cprocsp/bin/amd64/cryptcp -nochain -vsignf blank.pdf -f blank.pdf.sgn

через онлайн сервис проверки тоже работает

тоже самое пробую сделать на php


Цитата:
<?php
$data = base64_encode(file_get_contents('blank.pdf'));
$sgn = base64_encode(file_get_contents('blank.pdf.sgn'));

try
{
$sd = new CPSignedData();

$sd->set_ContentEncoding(BASE64_TO_BINARY);
$sd->set_Content($data);

$check = $sd->VerifyCades($sgn, CADES_BES, 1); // 1 - отсоединенная

printf('OK');
}
catch(Exception $e)
{
printf('Exception: ' . $e->getMessage() . "\n");
printf("FAIL\n");
}
?>


завершается с исключением

Exception: Cannot find the original signer.
(0x8009100E)
FAIL

подскажите, что не так?
Offline Андрей *  
#5 Оставлено : 11 января 2022 г. 10:19:09(UTC)
Андрей *

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

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

Сказал «Спасибо»: 425 раз
Поблагодарили: 1718 раз в 1324 постах
Приложите пример файла (можно текстовый файл подписать тестовым сертификатом).
Подпись точно отсоединенная и в DER?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
GTAlex оставлено 11.01.2022(UTC)
Offline GTAlex  
#6 Оставлено : 11 января 2022 г. 10:56:54(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 19 раз
Автор: Андрей * Перейти к цитате
Приложите пример файла (можно текстовый файл подписать тестовым сертификатом).
Подпись точно отсоединенная и в DER?


что такое DER не очень понимаю, подпись генерировал с помощью плагина, по образу и подобию
https://www.cryptopro.ru...page/cades_bes_file.html

файл + подпись прикрепил

blank.pdf.sig.txt (31kb) загружен 2 раз(а). blank.pdf.txt (15kb) загружен 1 раз(а).
Offline Андрей *  
#7 Оставлено : 11 января 2022 г. 11:42:57(UTC)
Андрей *

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

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

Сказал «Спасибо»: 425 раз
Поблагодарили: 1718 раз в 1324 постах
Автор: GTAlex Перейти к цитате
Автор: Андрей * Перейти к цитате
Приложите пример файла (можно текстовый файл подписать тестовым сертификатом).
Подпись точно отсоединенная и в DER?


что такое DER не очень понимаю, подпись генерировал с помощью плагина, по образу и подобию
https://www.cryptopro.ru...page/cades_bes_file.html

файл + подпись прикрепил

blank.pdf.sig.txt (31kb) загружен 2 раз(а). blank.pdf.txt (15kb) загружен 1 раз(а).


Отсюда и проблемы. Получить на странице base64 и еще раз закодировать в base64 перед передачей в cadesphp...
Если подпись из DER (бинарный, исходный формат), закодирована в base64 - не нужно вот это:
$sgn = base64_encode(file_get_contents('blank.pdf.sgn'));
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
GTAlex оставлено 11.01.2022(UTC)
Offline GTAlex  
#8 Оставлено : 11 января 2022 г. 11:54:32(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 19 раз
Автор: Андрей * Перейти к цитате

Отсюда и проблемы. Получить на странице base64 и еще раз закодировать в base64 перед передачей в cadesphp...
Если подпись из DER (бинарный, исходный формат), закодирована в base64 - не нужно вот это:
$sgn = base64_encode(file_get_contents('blank.pdf.sgn'));


Да, всё как обычно - проблемы из-за отсутствия знаний ... спасибо за разъяснение!

Теперь даже не исключение, а ситуация которую я уже встречал на форуме, и однозначного решения не увидел

Segmentation fault :(
Offline GTAlex  
#9 Оставлено : 11 января 2022 г. 14:30:11(UTC)
GTAlex

Статус: Активный участник

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

Сказал(а) «Спасибо»: 19 раз
Цитирую предоставленное ТП решение проблемы с segmentation fault

Цитата:

Выполните команду (с правами root) вида:

/opt/cprocsp/sbin/amd64/cpconfig -ini '\cryptography\apppath' -add string 'libcurl.so' '/usr/lib/x86_64-linux-gnu/libcurl.so'

где

'/usr/lib/x86_64-linux-gnu/libcurl.so' - замените на путь к системной библиотеке libcurl.



в моём случае (CentOS 7 + PHP 7.4.27) путь такой '/usr/lib64/libcurl.so.4.3.0'
вставил, запустил, заработало!
Offline GTAlex  
#10 Оставлено : 11 января 2022 г. 14:30:46(UTC)
GTAlex

Статус: Активный участник

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

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