Поделиться через


Хранилища коллекций

По мере роста числа сертификатов спискиотзыва сертификатов (CCL) и список доверия сертификатов (CTL) в коллекции пользователя организация этих сертификатов становится проблемой. Одним из возможных решений является создание отдельных хранилищ сертификатов для хранения различных типов сертификатов. Это решение создает новую проблему, так как приложению может потребоваться выполнить поиск в нескольких разных хранилищах, чтобы найти определенный сертификат. Использование логических хранилищ или хранилищ коллекций решает эту проблему.

Логическое хранилище и хранилище сертификатов коллекции — это группы физических хранилищ, которые отображаются в приложении в виде одного хранилища. Все хранилища элементов логического хранилища или хранилища коллекций можно искать или перечислять с помощью одного вызова функции к CertFindCertificateInStore или CertEnumCertificatesInStore.

Использование логических хранилищ или хранилищ коллекций также обеспечивает гибкость, которую трудно достичь с помощью бумажных записей. Сертификат в одном физическом хранилище может быть членом нескольких разных логических групп. Таким образом, отдельное физическое хранилище может быть членом нескольких логических или коллекций, как показано на следующем рисунке.

collection stores

На этом рисунке представлены следующие основные понятия хранилища логических сертификатов:

  • Хранилище сертификатов коллекции имеет указатель на первый блок указателя для этого хранилища коллекций.
  • Каждый блок указателя хранилища коллекций имеет указатель на одноуровневое хранилище и указатель на следующий блок коллекции указателя.
  • Каждое одноуровневое хранилище в коллекции — это простое физическое хранилище сертификатов.
  • Простое хранилище сертификатов может быть одноуровневое хранилище элементов в различных хранилищах коллекций.
  • Сертификаты, добавленные в хранилище коллекций, физически добавляются в одно из одноуровневых хранилищ в коллекции.
  • Доступ к сертификатам в одноуровневом хранилище можно получить любым хранилищем коллекций, в котором одноуровневое хранилище является членом.

Хранилища коллекций создаются в приложении путем открытия хранилища коллекций с помощью CertOpenStore , а затем с помощью CertAddStoreToCollection для добавления открытого одноуровневого хранилища в хранилище коллекций. Одноуровневое хранилище можно удалить из хранилища коллекций, вызвав CertRemoveStoreFromCollection.