集合存储

随着 证书数、 证书吊销列表 (CRL) ,以及用户集合中) CTL (证书信任列表 的增长,这些证书的组织成为一个问题。 一种可能的解决方案是创建单独的证书存储来保留不同类型的证书。 此解决方案会产生一个新问题,因为应用程序可能需要搜索多个不同的存储来查找特定的证书。 使用逻辑存储或集合存储可解决此问题。

逻辑存储和集合证书存储是应用程序显示为单个存储的物理存储组。 可以使用对 CertFindCertificateInStore 或 CertEnumCertificatesInStore 的单个函数调用来搜索或枚举逻辑存储或集合存储的所有成员 存储

使用逻辑存储或集合存储也提供了纸质记录难以实现的灵活性。 单个物理存储中的证书可能需要是多个不同逻辑组的成员。 因此,单个物理存储可以是多个逻辑存储或集合存储的成员,如下图所示。

集合存储

此图显示了以下基本的逻辑证书存储概念:

  • 集合证书存储具有指向该集合存储的第一个指针块的指针。
  • 集合存储的每个指针块都有一个指向同级存储的指针和指向集合的下一个指针块的指针。
  • 集合中的每个同级存储都是一个简单的物理证书存储。
  • 简单的证书存储可以是许多不同集合存储中的成员同级存储。
  • 添加到集合存储的证书以物理方式添加到集合中的同级存储之一。
  • 同级存储区中的任何集合存储都可以访问同级存储中的证书。

通过使用 CertOpenStore 打开集合存储,然后使用 CertAddStoreToCollection 将打开的同级存储添加到集合存储,在应用程序中生成集合存储。 可以通过调用 CertRemoveStoreFromCollection 从集合存储中删除同级存储。