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


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

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

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

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

коллекции хранит

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

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

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