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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Slavka63  
#1 Оставлено : 10 апреля 2017 г. 9:19:33(UTC)
Slavka63

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
Доброе время суток - необходимо подписать xml файл хитрым способом

вот полный листинг того что делаю

Код:

<?php



//Вспомогательные функции предварительной инициализации
function SetupStore($location, $name, $mode)
{
    $store = new CPStore();
    $store->Open($location, $name, $mode); 
    return $store;
}

function SetupCertificates($location, $name, $mode)
{
    $store = SetupStore($location, $name, $mode);
    
    //die ( "loc: ".$location." | ".$name." | ".$mode);
    $certs = $store->get_Certificates();
    return $certs;

}

function SetupCertificate($location, $name, $mode,
                           $find_type, $query, $valid_only,
                           $number)
{
    $certs = SetupCertificates($location, $name, $mode);
    if($find_type != NULL)
    {
        $certs = $certs->Find($find_type, $query, $valid_only);
        return $certs->Item($number);
    }
    else
    {
        $cert = $certs->Item($number);
        return $cert;
    }
}



$cert = SetupCertificate(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY,
                                 CERTIFICATE_FIND_SUBJECT_NAME, "Test sertificate", 0,
                                 1);



$signdata = <<<XML
<ns:SenderProvidedRequestData Id="SIGNED_BY_CONSUMER" xmlns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/1.1" xmlns:ns2="urn://x-artefacts-smev-gov-ru/services/message-exchange/types/basic/1.1">	<ns:MessageID>72db683d-c7e4-11e4-b8aa-d4c9eff07b77</ns:MessageID><ns2:MessagePrimaryContent><ns1:BreachRequest xmlns:ns1="urn://x-artefacts-gibdd-gov-ru/breach/root-121294027/1.0.0"  xmlns:ns2="urn://x-artefacts-gibdd-gov-ru/breach/commons-121294027/1.0.0"  xmlns:ns3="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" Id="PERSONAL_SIGNATURE"> <ns1:RequestedInformation>         <ns3:FamilyName>Петров</ns3:FamilyName>         <ns3:FirstName>Петр</ns3:FirstName>         <ns3:Patronymic>Петрович</ns3:Patronymic> <ns2:RegPointNum>У160УК34</ns2:RegPointNum> </ns1:RequestedInformation> <ns1:Governance> <ns2:Name>ГИБДД РФ</ns2:Name> <ns2:Code>GIBDD</ns2:Code> <ns2:OfficialPerson> <ns3:FamilyName>Андреев</ns3:FamilyName> <ns3:FirstName>Андрей</ns3:FirstName> <ns3:Patronymic>Андреевич</ns3:Patronymic> </ns2:OfficialPerson> </ns1:Governance> </ns1:BreachRequest> </ns2:MessagePrimaryContent></ns:SenderProvidedRequestData>        
XML;


 $hashAlg = 100 ; //CADESCOM_HASH_ALGORITHM_CP_GOST_3411: 100,

   $oHashedData = new CPHashedData;
        $oHashedData->set_Algorithm($hashAlg);
        $oHashedData->hash($signdata);
        $sHashValue1= $oHashedData->get_Value();

$file =  '/var/www/html/test.log';
$current = "test1\n"; // в лог пишется
file_put_contents($file, $current);

//все интересное начинается здесь

 $rawSignature = new CPRawSignature();
$cert1 = substr($cert->export(0),0,-2);   //метод неправильно экспортирует сертификат ( в конце какойто мусор приходится отрезать)
echo "d";
$gg= $rawSignature->SignHash ($oHashedData,$cert);  //этот метод вызывает падение php и следом apache2
$current = "test2\n".$gg;  //строка в лог уже не пишется
file_put_contents($file, $current);
die ("ff"); 



на экран ничего не выводится - браузер пишет либо "Соединение было сброшено" либо "ERR_EMPTY_RESPONSE" что впринципе одно и тоже

в логах apache2 пишутся вот такие строчки
Код:

apache2: /usr/include/boost/smart_ptr/shared_ptr.hpp:653: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject; typename boost::detail::sp_member_access<T>::type = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject*]: Assertion `px != 0' failed.
apache2: /usr/include/boost/smart_ptr/shared_ptr.hpp:653: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject; typename boost::detail::sp_member_access<T>::type = CryptoPro::PKI::CAdES::CPPCadesRawSignatureObject*]: Assertion `px != 0' failed.
[Mon Apr 10 08:58:10.547142 2017] [core:notice] [pid 13988] AH00052: child pid 13991 exit signal Aborted (6)
[Mon Apr 10 08:58:10.547249 2017] [core:notice] [pid 13988] AH00052: child pid 13992 exit signal Aborted (6)


прошу помощи с подписанием. заранее спасибо

теперь о версиях
Linux deb-krypto 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
PHP Version => 5.6.24-0+deb8u1

далее незнаю что надо что не надо
||/ Имя Версия Архитектура Описание
+++-=====================================================-===============================-===============================-===============================================================================================================
ii cprocsp-curl-64 4.0.0-4 amd64 CryptoPro Curl shared library and binaris. Build 9708.
ii cprocsp-pki-cades 2.0.0-1 amd64 CryptoPro PKI
ii cprocsp-pki-plugin 2.0.0-1 amd64 CryptoPro PKI


php_CPCSP Version 0.1

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

Offline cross  
#2 Оставлено : 10 апреля 2017 г. 16:58:39(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Да, в коде инициализации обьекта CPRawSignature есть ошибка. Вам нужно применить вот такой патч и пересобрать расширение.
Цитата:
Index: PHPCadesCPRawSignature.cpp
===================================================================
--- PHPCadesCPRawSignature.cpp (revision 155173)
+++ PHPCadesCPRawSignature.cpp (working copy)
@@ -56,6 +56,7 @@
}

zend_function_entry raw_sig_methods[] = {
+ PHP_ME(CPRawSignature, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
PHP_ME(CPRawSignature, VerifyHash, NULL, ZEND_ACC_PUBLIC)
PHP_ME(CPRawSignature, SignHash, NULL, ZEND_ACC_PUBLIC){NULL, NULL, NULL}};


Спасибо за сообщение об ошибке.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
Slavka63 оставлено 11.04.2017(UTC)
Offline Slavka63  
#3 Оставлено : 11 апреля 2017 г. 8:28:12(UTC)
Slavka63

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
благодарю за оперативный ответ - после применения фикса и пересборки все работает.

Не смотрели почему при экспорте сертификата приходится отрезать 2 последних символа ?

substr($cert->export(0),0,-2);

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

Offline cross  
#4 Оставлено : 11 апреля 2017 г. 14:26:56(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Там перевод строки стоит. Это расширение использует код от ЭЦП Browser plug-in, вроде раньше не было ни у кого с этим проблем. А в каком месте этот перевод строки вам мешает?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Slavka63  
#5 Оставлено : 11 апреля 2017 г. 15:35:05(UTC)
Slavka63

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 1 раз в 1 постах
при формировании xml - делаю экспорт и получаю вот такое чудо на выходе

<ds:X509Certificate>MIIJ1DCCCYOgAwIBAgIKFnwxsQADAAAR6DAIBgYqhQMCAgMwggGGMR8wHQYJKoZI
hvcNAQkBFhBydWNAc2FtcmVnaW9uLnJ1MUMwQQYDVQQJHjoEQwQ7AC4AIAQcBD4E
OwQ+BDQEPgQzBDIEMARABDQENQQ5BEEEOgQwBE8ALAAgBDQALgAgADIAMQAwMVUw
UwYDVQQLHkwEIwQ/BEAEMAQyBDsENQQ9BDgENQAgBDgEPQREBD4EQAQ8BDAERgQ4
BD4EPQQ9BD4EOQAgBDEENQQ3BD4EPwQwBEEEPQQ+BEEEQgQ4MRowGAYIKoUDA4ED
AQESDDAwNjMxNTg1NjMyNTEYMBYGBSqFA2QBEg0xMDk2MzE1MDAzMDgwMR8wHQYD
VQQKHhYEEwQaBCMAIAQhBB4AIAQgBCYEIwQfMRUwEwYDVQQHHgwEIQQwBDwEMARA
BDAxMTAvBgNVBAgeKAA2ADMAIAQhBDAEPAQwBEAEQQQ6BDAETwAgBD4EMQQ7BDAE
QQRCBEwxCzAJBgNVBAYTAlJVMRkwFwYDVQQDHhAAUgBVAEMAXwBTAE8AXwAyMB4X
DTE2MDUyNTA1NDYwMFoXDTE3MDUyNTA1NTEwMFowggJwMRYwFAYFKoUDZAMSCzAw
NzU4MDc2OTYwMRgwFgYFKoUDZAESDTEwMjYzMDA5NTk4NzExGjAYBggqhQMDgQMB
ARIMMDA2MzE1ODAwMDAxMSAwHgYJKoZIhvcNAQkBFhFjaGVyZXBhbm92QGR5dS5z
dTELMAkGA1UEBhMCUlUxMTAvBgNVBAgeKAA2ADMAIAQhBDAEPAQwBEAEQQQ6BDAE
TwAgBD4EMQQ7BDAEQQRCBEwxFTATBgNVBAceDAQhBDAEPAQwBEAEMDFjMGEGA1UE
Ch5aBBQENQQ/BDAEQARCBDAEPAQ1BD0EQgAgBEMEPwRABDAEMgQ7BDUEPQQ4BE8A
IAQ4BDwEQwRJBDUEQQRCBDIEPgQ8ACAEMwAuBD4ALgAgBCEEMAQ8BDAEQAQwMR8w
HQYDVQQLHhYEIARDBDoEPgQyBD4ENARBBEIEMgQ+MWMwYQYDVQQDHloEFAQ1BD8E
MARABEIEMAQ8BDUEPQRCACAEQwQ/BEAEMAQyBDsENQQ9BDgETwAgBDgEPARDBEkE
NQRBBEIEMgQ+BDwAIAQzAC4EPgAuACAEIQQwBDwEMARABDAxOTA3BgNVBAkeMARD
BDsALgAgBBsETAQyBDAAIAQiBD4EOwRBBEIEPgQzBD4ALAAgBDQALgAgADIAMDE7
MDkGA1UEDB4yBCAEQwQ6BD4EMgQ+BDQEOARCBDUEOwRMACAENAQ1BD8EMARABEIE
MAQ8BDUEPQRCBDAxJzAlBgNVBCoeHgQhBDUEQAQzBDUEOQAgBBgEMgQwBD0EPgQy
BDgERzEbMBkGA1UEBB4SBCcENQRABDUEPwQwBD0EPgQyMGMwHAYGKoUDAgITMBIG
ByqFAwICJAAGByqFAwICHgEDQwAEQOqXR4t5UB+Q+hDN6VCE2mQCccGQApX/QTR6
BF48ytmi4Om2ZFYip4zFjow9EBSD3g5VqhCtkQhTUzWIrwfOJaCjggThMIIE3TAO
BgNVHQ8BAf8EBAMCBPAwGQYJKoZIhvcNAQkPBAwwCjAIBgYqhQMCAhUwSAYDVR0l
BEEwPwYIKwYBBQUHAwQGBiqFA2RxAQYGKoUDZHECBgcqhQMCAiIGBggrBgEFBQcD
AgYIKoUDBQEYAhMGBiqFA2QCATAdBgNVHQ4EFgQUID4qJ7Nd+DDtVsJvkngT2jVy
U1IwggHHBgNVHSMEggG+MIIBuoAUAysSvkSnohVP2BBVFD73bFSDz8OhggGOpIIB
ijCCAYYxHzAdBgkqhkiG9w0BCQEWEHJ1Y0BzYW1yZWdpb24ucnUxQzBBBgNVBAke
OgRDBDsALgAgBBwEPgQ7BD4ENAQ+BDMEMgQwBEAENAQ1BDkEQQQ6BDAETwAsACAE
NAAuACAAMgAxADAxVTBTBgNVBAseTAQjBD8EQAQwBDIEOwQ1BD0EOAQ1ACAEOAQ9
BEQEPgRABDwEMARGBDgEPgQ9BD0EPgQ5ACAEMQQ1BDcEPgQ/BDAEQQQ9BD4EQQRC
BDgxGjAYBggqhQMDgQMBARIMMDA2MzE1ODU2MzI1MRgwFgYFKoUDZAESDTEwOTYz
MTUwMDMwODAxHzAdBgNVBAoeFgQTBBoEIwAgBCEEHgAgBCAEJgQjBB8xFTATBgNV
BAceDAQhBDAEPAQwBEAEMDExMC8GA1UECB4oADYAMwAgBCEEMAQ8BDAEQARBBDoE
MARPACAEPgQxBDsEMARBBEIETDELMAkGA1UEBhMCUlUxGTAXBgNVBAMeEABSAFUA
QwBfAFMATwBfADKCEADmbwXT1viNSGSXsqIT7gswcwYDVR0fBGwwajA2oDSgMoYw
aHR0cDovL3J1Yy5zYW1yZWdpb24ucnUvcnVjc29fY3J5cHRvcHJvXzIwMTUuY3Js
MDCgLqAshipodHRwOi8vMTAuMC40MC41OS9ydWNzb19jcnlwdG9wcm9fMjAxNS5j
cmwwQAYIKwYBBQUHAQEENDAyMDAGCCsGAQUFBzABhiRodHRwOi8vY2Euc2FtcmVn
aW9uLnJ1L29jc3Avb2NzcC5zcmYwKwYDVR0QBCQwIoAPMjAxNjA1MjUwNTQ2MDBa
gQ8yMDE3MDUyNTA1NDYwMFowKQYDVR0gBCIwIDAKBggrBgEFBQcDBDAIBgYqhQNk
cQEwCAYGKoUDZHECMDYGBSqFA2RvBC0MKyLQmtGA0LjQv9GC0L7Qn9GA0L4gQ1NQ
IiAo0LLQtdGA0YHQuNGPIDMuNikwggEzBgUqhQNkcASCASgwggEkDCsi0JrRgNC4
0L/RgtC+0J/RgNC+IENTUCIgKNCy0LXRgNGB0LjRjyAzLjYpDFMi0KPQtNC+0YHR
gtC+0LLQtdGA0Y/RjtGJ0LjQuSDRhtC10L3RgtGAICLQmtGA0LjQv9GC0L7Qn9GA
0L4g0KPQpiIg0LLQtdGA0YHQuNC4IDEuNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg
0YHQvtC+0YLQstC10YLRgdGC0LLQuNGPIOKEliDQodCkLzEyNC0yNzM4INC+0YIg
MDEuMDcuMjAxNQxP0KHQtdGA0YLQuNGE0LjQutCw0YIg0YHQvtC+0YLQstC10YLR
gdGC0LLQuNGPIOKEliDQodCkLzEyOC0yNzY4INC+0YIgMzEuMTIuMjAxNTAIBgYq
hQMCAgMDQQAPj34ZnWRnsMyDZrcLnG039Fde9pI2DUqh9IU9RYB07tz+UJMp32ID
o/qlOtWWM2HLA9Yaxeo5Fe43hHg6H5aG
�</ds:X509Certificate>

Что естественно не примет ни 1 валидатор.
Конечно это не критично - удалить 2 последних символа всегда можно .. но как то это не правильно =)
Offline cross  
#6 Оставлено : 11 апреля 2017 г. 16:09:46(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Цитата:
Index: PHPCadesCPCertificate.cpp
===================================================================
--- PHPCadesCPCertificate.cpp (revision 155179)
+++ PHPCadesCPCertificate.cpp (working copy)
@@ -125,7 +125,7 @@
str = (char *)ecalloc(len, sizeof(char));
memcpy(str, value.pbData(), len);

- RETURN_STRINGL(str, len, 0);
+ RETURN_STRINGL(str, len - 2 , 0);
}

PHP_METHOD(CPCertificate, Import) {

Можно так сделать для удобства.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
Slavka63 оставлено 11.04.2017(UTC)
Offline Slavka63  
#7 Оставлено : 11 апреля 2017 г. 16:11:10(UTC)
Slavka63

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

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

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