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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline couscous_mate  
#1 Оставлено : 8 июня 2023 г. 10:34:57(UTC)
couscous_mate

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день!

В документации описан интерфейс IAdditionalStore, с помощью которого можно передать в объект дополнительное хранилище для проверки статуса сертификата (или подписи), это описано тут и тут.
К сожалению, не нашел примеров реализации этого функционала ни в документации, ни на форуме. Возможно кто-нибудь уже занимался таким или сможет подсказать как правильно реализовать эту провреку?

Пытаюсь проверить сертификат следующим образом:
Код:

// Функция получения CAPICOM_MEMORY_STORE c CRL
async function getAdditionalStore() {
  return cadesplugin.async_spawn(function* getAdditionalStoreGenerator() {
    const crl = yield plugin.CreateObjectAsync('CAdESCOM.CRL');
    yield crl.Import(rawCRLString); // rawCRLString - строка с закодированным CRL

    const store = yield plugin.CreateObjectAsync('CAdESCOM.Store');
    // Открываем CAPICOM_MEMORY_STORE на чтение + запись
    yield store.Open(0, 'MemStore', cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
    // Добавляем объект с импортированным CRL
    yield store.AddCRL(crl);

    return store;
  });
}

// Функция для проверки статуса сертификата в личном хранилище
async function testCertificate() {
  const additionalStore = await getAdditionalStore(); // получили доп. хранилище из примера выше

  return cadesplugin.async_spawn(function* testCertificateGenerator() {
    const store = yield plugin.CreateObjectAsync('CAdESCOM.Store');
    // Открываем хранилище личных сертификатов
    yield store.Open(2, 'My', cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);

    const storeCertificates = yield store.Certificates;
    const cert = yield storeCertificates.Item(1); // берем первый сертификат (в этом случае, он единственный в хранилище)

    // Передаем дополнительное хранилище для проверки статуса сертификата
    yield cert.AdditionalStore(additionalStore);
    // Проверяем валидность сертификата
    const validity = yield cert.IsValid();
    const isValid = yield validity.Result;

    console.log(isValid); // -> false

    return yield store.Close();
  });
}

В примере выше сертификаты остаются невалидными, не смотря на то, что в них передается доп. хранилище со списком отозванных сертификатов УЦ, в котором этих сертификатов нет.

Что я делаю не так? Есть специалисты, которые знают ответ?

Спасибо!
Offline Андрей *  
#2 Оставлено : 8 июня 2023 г. 11:48:16(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Здравствуйте.

А цепочка до корневого УЦ строится успешно?
Техническую поддержку оказываем тут
Наша база знаний
Offline couscous_mate  
#3 Оставлено : 8 июня 2023 г. 11:52:09(UTC)
couscous_mate

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

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

Сказал(а) «Спасибо»: 3 раз
Если эти CRL импортировать через Инструменты КриптоПРО, то да, цепочка строится успешно.

Но вот метод, описанный мной выше, не работает. Например, если проверять подпись этим методом, то вылетает ошибка, что не удалось проверить цепочку сертификата.
То есть, как будто, этот AdditionalStore не учитывается при проверке :(

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

Offline couscous_mate  
#4 Оставлено : 9 июня 2023 г. 15:29:41(UTC)
couscous_mate

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

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

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