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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Vic589632147  
#1 Оставлено : 14 сентября 2016 г. 12:48:31(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Добрый день.

на нашем сервере установлен php 5.5.9
Мы не компилировали его из исходников, а установили из репозитория.

Существуют ли в природе уже скомпилированные версии ваших продуктов для Ubuntu?
У нас стоит Linux 3.13.0-85-generic #129-Ubuntu SMP Thu Mar 17 20:50:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux


Мы хотим проверять подписанные в браузере пользователями данные на стороне сервера и
посмотреть:
- данные электронной подписи пользователя,
- действительна ли она,
- подписанные ей данные.

Что нам нужно сделать на сервере, чтобы эти данные получать в php?

Offline cross  
#2 Оставлено : 14 сентября 2016 г. 14:45:55(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Что бы загрузить в php расширение оно должно быть собрано с той же версией php в которую он будет грузиться. Т.к. версий дистрибутивов много мы не собираем расширение сами а даем исходники для самостоятельной компиляции. Это достаточно просто сделать.


Если собирать совсем не хочется, можно дергать утилиты командной строки (cryptcp) для проверки подписи. Но они дают крайне ограниченный набор информации.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Vic589632147  
#3 Оставлено : 14 сентября 2016 г. 14:54:19(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Автор: cross Перейти к цитате
Что бы загрузить в php расширение оно должно быть собрано с той же версией php в которую он будет грузиться. Т.к. версий дистрибутивов много мы не собираем расширение сами а даем исходники для самостоятельной компиляции. Это достаточно просто сделать.


Если собирать совсем не хочется, можно дергать утилиты командной строки (cryptcp) для проверки подписи. Но они дают крайне ограниченный набор информации.


Просто - это вот тут: http://cpdn.cryptopro.ru...es/phpcades-install.html ?

У нас есть лицензия на версию 3.6, по этой ссылке про установку 4.0. Подойдет ли наша лицензия к этой версии?
Offline Vic589632147  
#4 Оставлено : 15 сентября 2016 г. 10:48:06(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Вот что мы сделали.

Получили подпись на страничке https://cryptopro.ru/certsrv/certrqma.asp

Подписали этой подписью надпись "Hello World" на страничке https://www.cryptopro.ru...des/demopage/simple.html

Полученный результат сохранили в файл hw.txt

Установили пачку программ:
$ ls -1
certmgr
cpverify
cryptcp
csptest
csptestf
der2xer
genkpim
inittst
nmcades
ocsputil
tsputil
wipefile

Установили какую-то цепочку сертификатов отсюда: http://www.cryptopro.ru/certsrv/certcarc.asp
./certmgr -list
Certmgr 1.0 (c) "CryptoPro", 2007-2010.
program for managing certificates, CRLs and stores

=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Serial : 0x2B6E3351FD6EB2AD48200203CB5BA141
SHA1 Hash : 0x046255290b0eb1cdd1797d9ab8c81f699e3687f3
SubjKeyID : 15317cb08d1ade66d7159c4952971724b9017a83
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 05/08/2014 13:44:24 UTC
Not valid after : 05/08/2019 13:54:03 UTC
PrivateKey Link : No
=============================================================================

[ErrorCode: 0x00000000]

И теперь пытаемся получить из сохраненного зашифрованного файла какие-нибудь данные:

cryptcp -verify hw.txt h.txt

----------------------------------------------------- начало вывода
CryptCP 4.0 (c) "Crypto-Pro", 2002-2015.
Command prompt Utility for file signature and encryption.

The following certificate will be used:
RDN:CRYPTO-PRO Test Center 2, CRYPTO-PRO LLC, Moscow, RU, support@cryptopro.ru
Valid from 05.08.2014 13:44:24 to 05.08.2019 13:54:03

Certificate chain is not checked for this certificate:
RDN:CRYPTO-PRO Test Center 2, CRYPTO-PRO LLC, Moscow, RU, support@cryptopro.ru
Valid from 05.08.2014 13:44:24 to 05.08.2019 13:54:03

The certificate or certificate chain is based on an untrusted root.
Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?Y

Certificate chains are checked.
Folder '/home/pilotsbrothers/Загрузки/':
/home/pilotsbrothers/Загрузки/hw.txt... Signature verifying...
Signer: RU, Victor
Skipping the signature due to signer certificate is not in certificate criterion.
Error: Signature.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/CPCrypt/DSign.cpp:743: 0x200001F9
[ErrorCode: 0x200001f9]
----------------------------------------------------- окончание вывода

После изучения вывода появилось несколько вопросов.
1. Можно ли избавиться от вопроса "Do you want to use this certificate ([Y]es, [N]o, [C]ancel)?"?
Ключики -nochain и -norev не помогают - вопрос все равно задается.

2. Почему появляется этот вопрос и что нужно сделать, чтобы он не появлялся?

3. В результирующем файле лежит вот что: "йeЎj+•", совсем не похоже на изначальную строку ("Hello World").
Что нужно сделать, чтобы получить исходную строку?


У нас на сайте пользователи подписывают своими подписями текстовые строки и отправляют на сервер.
Мы хотели бы при получении этих данных получить из этой подписанной строки следующие данные:
- кто подписал
- до какой даты действительна подпись
- исходную строку, которую подписал пользователь.

Какой последовательностью команд мы можем получить эти данные?

Отредактировано пользователем 15 сентября 2016 г. 11:07:31(UTC)  | Причина: Не указана

Offline Vic589632147  
#5 Оставлено : 15 сентября 2016 г. 11:37:36(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Пока мы ждем от вас ответ на предыдущее сообщение, пытаемся собрать библиотеку для php

команда eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix

выдает ошибку

/usr/bin/ld: cannot find -lcppcades

Как исправить эту ошибку?
Offline Vic589632147  
#6 Оставлено : 15 сентября 2016 г. 16:54:50(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Ау, тут есть кто-нибудь?

Скажите, можно надеяться на ответы или нет?

Offline Vic589632147  
#7 Оставлено : 15 сентября 2016 г. 18:37:22(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Несмотря на ошибку при компиляции модуля, в папке с результатами компиляции лежат файлы для подключения к php.

Мы создали символическую ссылку, как описано в вашей документации.

При попытке запустить php скрипт получаем ошибку:


# php -r '$o = new CPStore();'

PHP Warning: PHP Startup: php_CPCSP: Unable to initialize module
Module compiled with module API=20100525
PHP compiled with module API=20121212
These options need to match
in Unknown on line 0
PHP Fatal error: Class 'CPStore' not found in Command line code on line 1


То есть не сходится номер API у вашей библиотеки и исходников с сайта php

Мы скачали исходники на версию 5.5.9, которая на нашей машине с ubuntu.

подскажите, какие исходники нужно скачать, чтобы сошлись версии API у php и вашего модуля?
Offline Vic589632147  
#8 Оставлено : 16 сентября 2016 г. 12:08:34(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

Мне, конечно, приятно общаться здесь самому с собой.
Но, может, вы что-нибудь ответите?

Расскажу, как удалось скомпилировать so для php без ошибок - ручками поставили линк в папке amd64 на libcppcades по аналогии с другими файлами *.so

Возможно у вас что-то с Makefile.unix - не ставится нужная ссылка.

Мы, конечно, можем еще долго ковыряться с вашими продуктами, но вы вроде себя позиционируете как ведущего поставщика решений.

Может, пора уже соответствовать заявленному и как-то помочь пользователям?
Offline Vic589632147  
#9 Оставлено : 16 сентября 2016 г. 13:11:38(UTC)
Vic589632147

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

Группы: Участники
Зарегистрирован: 14.09.2016(UTC)
Сообщений: 9
Откуда: Far

С помощью костыля, описанного выше, соединили php с вашим расширением.

Попытка запустить ваш тестовый файл провалилась:

$ php -f /opt/cprocsp/src/phpcades/test_extension.php
PHP Fatal error: Call to a member function get_Certificates() on a non-object in /opt/cprocsp/src/phpcades/test_extension.php on line 12


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

function SetupCertificates($location, $name, $mode)
{
$store = SetupStore($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;
}
}

function test_CPSignedData_Sign_Verify()
{
try{
$content = "test content";
$address = "http://testca.cryptopro.ru/tsp/tsp.srf";
$cert = SetupCertificate(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY,
CERTIFICATE_FIND_SUBJECT_NAME, "test", 0,
1);

if(!$cert)
return "Certificate not found";

$signer = new CPSigner();
$signer->set_TSAAddress($address);
$signer->set_Certificate($cert);

$sd = new CPSignedData();
$sd->set_Content($content);

$sm = $sd->Sign($signer, 0, STRING_TO_UCS2LE);
printf("Signature is:\n");
printf($sm);
printf("\n");
$sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);
return 1;
}catch(Exception $e)
{
printf($e->getMessage());
}
}

if(test_CPSignedData_Sign_Verify() == 1)
{
printf("TEST OK\n");
}else
{
printf("TEST FAIL\n");
}

?>


----------------------------------------- окончание php кода -----------------------------------------


Скажите, что в нем поправить, чтобы мы могли удостовериться, что расширение php работает?
Где посмотреть документацию на объекты, их методы ?

Offline cross  
#10 Оставлено : 16 сентября 2016 г. 14:34:48(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Цитата:
function SetupStore($location, $name, $mode)
{
$store = new CPStore();
return $store->Open($location, $name, $mode);
}

вот тут надо заменить return $store->Open($location, $name, $mode);
на
Цитата:
$store->Open($location, $name, $mode); return $store;

Обьекты и интерфейс полностью скопированы с обьектов CADESCOM ( http://cpdn.cryptopro.ru...tent/cades/cadescom.html )
Отдельной документации на расширение нет. Детали методов всегда можно подсмотреть в исходниках расширения.

+ Судя по выводу certmgr в 4 ответе вы установили корневой сертификат в хранилище предназначенное для сертификатов пользователей, а нужно было в хранилище root.

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