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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Fridz55  
#1 Оставлено : 17 октября 2017 г. 20:10:04(UTC)
Fridz55

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 1 раз в 1 постах
Добрый день. Прошу помощи стартануть.Think
Есть задача организации подписания документов на сервере и работа с ЭЦП. Есть несколько вопросов:

1) По документации установили расширение для PHP. Но при запуске тестового файла возникает ошибка "The system cannot find the file specified. (0x80070002)". В чем может быть проблема?
2) Объяснте мне пжлс для чего устаналивается сертификат в коде и как это будет работать на боевой машине?
3) Может кто-то встречал документацию или хорошие статьи по php расширению крипто про?

Спасибо

Код:
Код:
<?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);
    $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_ContentEncoding(1);
        $sd->set_Content(base64_encode($content));

        $sm = $sd->SignCades($signer, 1, false, 0);
        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");
}

?>
Offline cross  
#2 Оставлено : 18 октября 2017 г. 10:54:02(UTC)
Анатолий Беляев

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
1. Тест сделан для проверки работы расширения после установки. Он создает и проверяет подпись. Для создания подписи на сервере требуется установленный сертификат и соответствующий ему закрытый ключ.
Именно он скорее всего у вас и не находится. Пример предполагает что есть сертификат с именем "Test". Именно его он у вас и не находит. Имя "Test" можно поменять на любое другое.
2. Если вы про код примера, то он не устанавливается и ищется. Он нужен для создания подписи.
3. Отдельной документации на расширение нет. Все его обьекты повторяют обьекты из "ЭЦП Browser plug-in" с точностью до способа вызова. Описание обьектов можно посмотреть по ссылке http://cpdn.cryptopro.ru...ades/cadescom_class.html
Само расширение предоставляется в исходных кодах, какие то детали методов всегда можно посмотреть в коде.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.