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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline andreygps  
#1 Оставлено : 2 марта 2020 г. 13:09:54(UTC)
andreygps

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:

$store = new \CPStore();
$store->Open($location, $name, $mode);
$certs = $store->get_Certificates();
if ($findType !== null) {
$certs = $certs->Find($findType, $query, $validOnly);
if (\is_string($certs)) {
return $certs;
}

return $certs->Item($number);
}

return $certs->Item($number);


Добрый день.

Скажите как работает метод Find
Мне надо выбрать сертификат не по $number
а к примеру по SHA1 Hash
ввожу комманду certmgr -list -store my
копирую оттуда значение SHA1 Hash сертифирата

потом в php выполняю
$certs = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, $query, 0);

в $query передаю SHA1 Hash сертификата и не находит

конкретно что надо передавать в $query?

в php пишу
var_dump(exec('certmgr -list -store my|grep "SHA1 Hash"'));die;
и мне показывает мой хеш
юзер тот же а сертификат не находит почему?

Offline Александр Лавник  
#2 Оставлено : 2 марта 2020 г. 13:46:35(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 802 раз в 741 постах
Автор: andreygps Перейти к цитате
Цитата:

$store = new \CPStore();
$store->Open($location, $name, $mode);
$certs = $store->get_Certificates();
if ($findType !== null) {
$certs = $certs->Find($findType, $query, $validOnly);
if (\is_string($certs)) {
return $certs;
}

return $certs->Item($number);
}

return $certs->Item($number);


Добрый день.

Скажите как работает метод Find
Мне надо выбрать сертификат не по $number
а к примеру по SHA1 Hash
ввожу комманду certmgr -list -store my
копирую оттуда значение SHA1 Hash сертифирата

потом в php выполняю
$certs = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, $query, 0);

в $query передаю SHA1 Hash сертификата и не находит

конкретно что надо передавать в $query?

в php пишу
var_dump(exec('certmgr -list -store my|grep "SHA1 Hash"'));die;
и мне показывает мой хеш
юзер тот же а сертификат не находит почему?


Здравствуйте.

Вот такой простейший пример работает (указан непосредственно отпечаток вторым аргументом метода Find):

Код:
<?php

    $store = new CPStore();
    $store->Open(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY);

    $certs = $store->get_Certificates();
    $certs = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, "c4a457ca37e7949d85d4f7e442be8f07827aab52", 0);
    $cert = $certs->Item(1);

    print $cert->get_Thumbprint();
    print "\n";

?>
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Александр Лавник за этот пост.
andreygps оставлено 02.03.2020(UTC)
Offline andreygps  
#3 Оставлено : 2 марта 2020 г. 14:04:38(UTC)
andreygps

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

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

Сказал(а) «Спасибо»: 3 раз
Цитата:

$store = new \CPStore();
$store->Open(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY);

$certs = $store->get_Certificates();
$certs->Find(CERTIFICATE_FIND_SHA1_HASH, 'randomhash', 0);
$cert = $certs->Item(1);

var_dump($cert->get_Thumbprint());die;


Если писать $certs->Item(1)
то он всегда находит даже если вместо хеше указать 'randomhash'
у вас разве не так?
Offline andreygps  
#4 Оставлено : 2 марта 2020 г. 14:09:49(UTC)
andreygps

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

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

Сказал(а) «Спасибо»: 3 раз
$certs = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, 'randomhash', 0);

$certs если возвращать в новую переменную то
$certs->Count() будет равняться 1 или 0 в случае неудачи

так работает, спасибо
Online Андрей *  
#5 Оставлено : 2 марта 2020 г. 15:20:48(UTC)
Андрей *

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

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

Сказал «Спасибо»: 573 раз
Поблагодарили: 2303 раз в 1804 постах
в исходном - $store->Open($location, $name, $mode);

переменные чему равны?

Техническую поддержку оказываем тут
Наша база знаний
Offline andreygps  
#6 Оставлено : 2 марта 2020 г. 15:29:27(UTC)
andreygps

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

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

Сказал(а) «Спасибо»: 3 раз
$store->Open(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY);
я уже понял как работает

возвращает отфильтрованный список:
$certsFilters = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, 'c4a457ca37e7949d85d4f7e442be8f07827aab52', 0);

должне быть равен 1 когда успех и 0 когда не нащел:
$certsFilters->Count()

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