CERT_CHAIN_ENGINE_CONFIG 结构 (wincrypt.h)

CERT_CHAIN_ENGINE_CONFIG 结构设置用于生成非默认证书链引擎的参数。 使用的引擎确定证书链的生成方式。

语法

typedef struct _CERT_CHAIN_ENGINE_CONFIG {
  DWORD      cbSize;
  HCERTSTORE hRestrictedRoot;
  HCERTSTORE hRestrictedTrust;
  HCERTSTORE hRestrictedOther;
  DWORD      cAdditionalStore;
  HCERTSTORE *rghAdditionalStore;
  DWORD      dwFlags;
  DWORD      dwUrlRetrievalTimeout;
  DWORD      MaximumCachedCertificates;
  DWORD      CycleDetectionModulus;
  HCERTSTORE hExclusiveRoot;
  HCERTSTORE hExclusiveTrustedPeople;
  DWORD      dwExclusiveFlags;
} CERT_CHAIN_ENGINE_CONFIG, *PCERT_CHAIN_ENGINE_CONFIG;

成员

cbSize

此结构的大小(以字节为单位)。

hRestrictedRoot

此配置参数可用于限制根存储区。 如果使用,它可以是根存储中仅包含适当证书子集的任何 HCERTSTORE 的句柄。

hRestrictedTrust

存储句柄。 如果使用,则限制搜索的存储以查找 CTL。

hRestrictedOther

存储句柄。 如果使用,则限制搜索证书和 CRL存储

cAdditionalStore

要搜索构建链所需的证书和 CRL 的其他存储的计数。

rghAdditionalStore

指向商店句柄数组的指针,用于在构建链中搜索任何其他商店。

dwFlags

定义了以下标志。

含义
CERT_CHAIN_CACHE_END_CERT
0x00000001
将缓存最终证书中的信息。 默认情况下,在生成链时缓存除结束证书之外的所有证书中的信息。 设置此标志会将缓存扩展到最终证书。
CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL
0x00000004
在生成证书链时仅使用缓存的 URL。 不会在 Internet 和 Intranet 中搜索基于 URL 的对象。
CERT_CHAIN_USE_LOCAL_MACHINE_STORE
0x00000008
使用 LocalMachine 注册表位置(而不是 CurrentUser 位置)生成链。
CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE
0x00000010
在生成链时启用缓存自动更新。
CERT_CHAIN_ENABLE_SHARE_STORE
0x00000020
允许共享用于生成链的证书存储。
CERT_CHAIN_DISABLE_AIA
0x00002000
显式关闭 AIA) 检索 (机构信息访问。

dwUrlRetrievalTimeout

基于网络的 URL 对象检索超时之前的毫秒数。 可以设置为零以使用默认限制。

MaximumCachedCertificates

限制可缓存为链的证书数。 可以设置为 0 以使用默认限制。

CycleDetectionModulus

在进行检查以确定链中是否存在证书周期之前添加到链中的证书数。 循环可以定义为在链中的两个不同位置具有相同的证书。

数字越少,检查的频率就越高。 对证书周期进行额外检查会大大减慢该过程。 此参数可以设置为零以使用默认限制。

hExclusiveRoot

包含独占信任定位点的证书存储的句柄。 如果 hExclusiveRoothExclusiveTrustedPeople 成员指向有效的存储区,则独占信任模式用于链式构建。

Windows 7 和 Windows Server 2008 R2: 开始支持此成员。

hExclusiveTrustedPeople

包含特定于应用程序的对等受信任证书的证书存储的句柄。 如果 hExclusiveRoothExclusiveTrustedPeople 成员指向有效的存储区,则独占信任模式用于链式构建。

Windows 7 和 Windows Server 2008 R2: 开始支持此成员。

dwExclusiveFlags

可以设置以下标志。 仅当 hExclusiveRoothExclusiveTrustedPeople 或两者都不为 NULL 时,标志才适用。

Windows 8 和 Windows Server 2012: 开始支持此成员。

含义
CERT_CHAIN_EXCLUSIVE_ENABLE_CA_FLAG
0x00000001
指示在证书验证期间应将 hExclusiveRoot 存储中的非自签名中间 CA 证书视为信任定位点。 如果证书链接到此 CA,则链生成将终止,并且该证书被视为受信任证书。 不会对 CA 证书执行签名验证或吊销检查。

默认情况下,如果未设置此标志,则只有 hExclusiveRoot 存储中的自签名证书被视为信任定位点。

另请参阅 CERT_TRUST_STATUS 结构中的 CERT_TRUST_IS_CA_TRUSTED 值。

备注

链生成引擎在生成链中使用四个证书存储。 它们是 hRoot、hWorld、hTrust 和 hOther。 创建链引擎时,通过使用此结构中的信息建立这些存储的句柄。

hRoot 是 hRestrictedRoot 中的存储句柄;如果 hRestrictedRootNULL,则为系统存储“Root”的句柄。

hWorld 是一个集合证书存储,包括同级存储 hRoot、“CA”、“My”、“Trust”以及其句柄位于 rghAdditionalStore 指向的数组中的任何其他存储。

hTrust 是 来自 hRestrictedTrust 的存储句柄;如果 hRestrictedTrustNULL,则为 hWorld。

hOther 为 hRestrictedOther 加 hRoot,或者,如果 hRestrictedTrust 为非 NULL,则 hWorld 集合存储加上 hRestrictedTrust 中的存储句柄。

独占信任模式允许应用程序为证书链验证指定信任定位点和对等信任证书。 在独占信任模式下,将忽略系统上的根存储和受信任人员存储,并改用 hExclusiveRoothExclusiveTrustedPeople 成员指向的定位点和证书。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 wincrypt.h

另请参阅

CERT_TRUST_STATUS

CertCreateCertificateChainEngine