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

Уведомление

Icon
Error

4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей *  
#11 Оставлено : 12 января 2021 г. 20:44:24(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Васильев Михаил Перейти к цитате
Автор: Санчир Момолдаев Перейти к цитате
Вам выше Андрей * привел код для проверки. Его достаточно.
Исключений нет? Проверка прошла : иначе ошибка
Вам же не нужно подписывать ничего на сервере, следовательно не нужен и signer




$sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);

тогда что указать в $sm в примере Андрея ?


Это сама подпись.
Техническую поддержку оказываем тут
Наша база знаний
Offline Васильев Михаил  
#12 Оставлено : 12 января 2021 г. 21:27:21(UTC)
Васильев Михаил

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате
Автор: Васильев Михаил Перейти к цитате
Автор: Санчир Момолдаев Перейти к цитате
Вам выше Андрей * привел код для проверки. Его достаточно.
Исключений нет? Проверка прошла : иначе ошибка
Вам же не нужно подписывать ничего на сервере, следовательно не нужен и signer




$sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);

тогда что указать в $sm в примере Андрея ?


Это сама подпись.



Правильно ли я понимаю, что для примера на странице https://www.cryptopro.ru...ge/cades_bes_sample.html
значение поля "Данные для подписи" я подставляю в $content,
а значение поля "Подпись сформирована успешно" (после нажатия на Подписать) я подставляю в $sm (убрав переносы строк, разумеется)
и потом по Вашему короткому примеру ?

Если да, то тогда возникает ошибка на строке с $sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);

Internal error. (0x8009100E)
Offline Андрей *  
#13 Оставлено : 12 января 2021 г. 21:59:02(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
На той странице присоединенная подпись, content не нужно передавать.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#14 Оставлено : 12 января 2021 г. 22:10:40(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Код:



function SignatureCheck($data, $sgn, $detached, $IgnoreUntrustCA) {
...
если $detached = 1 - отсоединенная
$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode
...


$SignedData = new \CPSignedData();
 $SignedData->set_ContentEncoding(BASE64_TO_BINARY); 

 if ($data) 
  { 
   $SignedData->set_Content(base64_encode($data));         
  }


 try {
     $SignedData->VerifyCades($sgn, 0x01, $detached);
     Успешно проверена подпись и цепочка сертификатов 
      
          }
        catch(Exception $e) {
            /*
            0x800B010A: Не удается построить цепочку сертификатов для доверенного корневого центра => установить через certmgr сертификат УЦ
            */
            $result = false;
			$SignatureCheckResult = $e->getMessage();
       
            if (strpos($e->getMessage(), "0x800B010A")) {  
			    
				$cert = GetSignerCert($SignedData);
                $SignatureCheckResult = "Подпись корректна, но нет доверия к корневому сертификату УЦ";
				 if ($cert)
					  {
						  $SignatureCheckResult = $SignatureCheckResult . ": ". iconv('WINDOWS-1251', 'UTF-8',  $cert->GetInfo('1'));
					  } 
				
				if ($IgnoreUntrustCA)
				{ 
			          $result = true;   
				} 
				
            }
            if (strpos($e->getMessage(), "0x80091004")) {
				$SignatureCheckResult = "Подпись повреждена (Invalid cryptographic message), код ошибки: 0x80091004";
            
            }
			
			
		if (strpos($e->getMessage(), "0x800B010C")) {   
                $SignatureCheckResult = "Сертификат был отозван (код ошибки: 0x800B010C)"; 
            }
			
        } 
Техническую поддержку оказываем тут
Наша база знаний
Offline Васильев Михаил  
#15 Оставлено : 13 января 2021 г. 9:55:23(UTC)
Васильев Михаил

Статус: Участник

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

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

$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode



Тогда что именно нужно подставлять в $data и в $sgn в моём случае ?
Если я пользуюсь примером из https://www.cryptopro.ru...ge/cades_bes_sample.html
Offline Андрей *  
#16 Оставлено : 13 января 2021 г. 10:06:57(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Васильев Михаил Перейти к цитате
Автор: Андрей * Перейти к цитате
Код:

$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode



Тогда что именно нужно подставлять в $data и в $sgn в моём случае ?
Если я пользуюсь примером из https://www.cryptopro.ru...ge/cades_bes_sample.html


Выше пример, изучили?

Если присоединенная подпись - $data не передаётся, только $sgn
+ примечание о кодировке base64.
Техническую поддержку оказываем тут
Наша база знаний
Offline Васильев Михаил  
#17 Оставлено : 13 января 2021 г. 10:09:30(UTC)
Васильев Михаил

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате
Автор: Васильев Михаил Перейти к цитате
Автор: Андрей * Перейти к цитате
Код:

$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode



Тогда что именно нужно подставлять в $data и в $sgn в моём случае ?
Если я пользуюсь примером из https://www.cryptopro.ru...ge/cades_bes_sample.html


Выше пример, изучили?

Если присоединенная подпись - $data не передаётся, только $sgn
+ примечание о кодировке base64.



...
if ($data) {
//$SignedData->set_Content(base64_encode($data)); ТУТ Я ЗАКОМЕНТИРОВАЛ
}
....



$sgn = file_get_contents('sign.txt');
SignatureCheck($sgn, $sgn, 0, true);

Internal error. (0x8009100E)

========================================

Если через утилиту проверить, то:

CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020.
Утилита командной строки для подписи и шифрования файлов.
Папка '/home/vm/sites/sso/public_html/public/':
/home/vm/sites/sso/public_html/public/sign.txt... Проверка подписи... 0%Ошибка: Некорректное преобразование BASE64.
../../../../CSPbuild/CSP/samples/CPCrypt/DSign.cpp:2039: 0x20000067
[ErrorCode: 0x20000067]

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

Offline Васильев Михаил  
#18 Оставлено : 13 января 2021 г. 10:39:43(UTC)
Васильев Михаил

Статус: Участник

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

Сказал(а) «Спасибо»: 4 раз
Автор: Андрей * Перейти к цитате
Автор: Васильев Михаил Перейти к цитате
Автор: Андрей * Перейти к цитате
Код:

$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode



Тогда что именно нужно подставлять в $data и в $sgn в моём случае ?
Если я пользуюсь примером из https://www.cryptopro.ru...ge/cades_bes_sample.html


Выше пример, изучили?

Если присоединенная подпись - $data не передаётся, только $sgn
+ примечание о кодировке base64.



Я косячнул. Поправил файл с подписью и проверил его через утилиту:

vm@patti:/opt/cprocsp/bin/amd64$ ./cryptcp -verify -verall /home/vm/sites/sso/public_html/public/sign.txt
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020.
Утилита командной строки для подписи и шифрования файлов.
Папка '/home/vm/sites/sso/public_html/public/':
/home/vm/sites/sso/public_html/public/sign.txt... Проверка подписи...
Автор подписи: RU, Санкт-Петербург, Санкт-Петербург, ООО ТУТ ВСЁ ВЕРНО ПРО МОЮ ЭЦП НАПИСАНО !!!!!!
Подпись проверена.
[ErrorCode: 0x00000000]




Однако PHP-код продолжает ошибки:

The revocation process could not continue - the certificate(s) could not be checked. (0x800B010E)

Offline Андрей *  
#19 Оставлено : 13 января 2021 г. 14:24:21(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Васильев Михаил Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: Васильев Михаил Перейти к цитате
Автор: Андрей * Перейти к цитате
Код:

$data, $sgn - бинарные данные, если уже закодированы в base64 - убрать base64_encode



Тогда что именно нужно подставлять в $data и в $sgn в моём случае ?
Если я пользуюсь примером из https://www.cryptopro.ru...ge/cades_bes_sample.html


Выше пример, изучили?

Если присоединенная подпись - $data не передаётся, только $sgn
+ примечание о кодировке base64.



Я косячнул. Поправил файл с подписью и проверил его через утилиту:

vm@patti:/opt/cprocsp/bin/amd64$ ./cryptcp -verify -verall /home/vm/sites/sso/public_html/public/sign.txt
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020.
Утилита командной строки для подписи и шифрования файлов.
Папка '/home/vm/sites/sso/public_html/public/':
/home/vm/sites/sso/public_html/public/sign.txt... Проверка подписи...
Автор подписи: RU, Санкт-Петербург, Санкт-Петербург, ООО ТУТ ВСЁ ВЕРНО ПРО МОЮ ЭЦП НАПИСАНО !!!!!!
Подпись проверена.
[ErrorCode: 0x00000000]




Однако PHP-код продолжает ошибки:

The revocation process could not continue - the certificate(s) could not be checked. (0x800B010E)



добавьте:
-xlongtype1

будет такая же ошибка

Пробовали добавить CRL для сертификатов в цепочке?

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#20 Оставлено : 13 января 2021 г. 14:34:47(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: Васильев Михаил Перейти к цитате

$sgn = file_get_contents('sign.txt');
SignatureCheck($sgn, $sgn, 0, true);

Internal error. (0x8009100E)


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