CertOpenServerOcspResponse 函数 (wincrypt.h)

CertOpenServerOcspResponse 函数打开联机证书状态协议的句柄, (与服务器证书链关联的 OCSP) 响应。

语法

HCERT_SERVER_OCSP_RESPONSE CertOpenServerOcspResponse(
  [in] PCCERT_CHAIN_CONTEXT                 pChainContext,
  [in] DWORD                                dwFlags,
       PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA pOpenPara
);

参数

[in] pChainContext

包含证书链 的CERT_CHAIN_CONTEXT 结构的地址。

[in] dwFlags

含义
0
0x00000000
此 API 将尝试在返回之前检索初始 OCSP 响应,这意味着它将在检索期间被阻止。
CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG
0x00000001
将此标志设置为立即返回,而无需进行初始同步检索。

pOpenPara

不使用此参数,必须为 NULL

返回值

如果成功,则返回与服务器证书链关联的 OCSP 响应的句柄;否则为 NULL。 如果不再需要此句柄,则必须将此句柄传递给 CertCloseServerOcspResponse 函数。

有关扩展的错误信息,请调用 GetLastErrorGetLastError 函数返回的可能错误代码包括但不限于以下内容。

返回代码 说明
ERROR_INVALID_PARAMETER
一个或多个参数无效。
CRYPT_E_NOT_IN_REVOCATION_DATABASE
结束证书不包含 OCSP 机构信息访问 (AIA) URL。

备注

dwFlags 设置为 0 时, CertOpenServerOcspResponse 函数在返回之前会尝试检索初始 OCSP 响应。 它在检索期间阻止其进程线程。 CertOpenServerOcspResponse 函数创建一个后台线程,用于预提取时间有效的 OCSP 响应。 如果无法成功检索第一个 OCSP 响应,如果不是上述错误情况之一,仍会返回非 NULL 句柄。

dwFlags 设置为 1 或 CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG时, CertOpenServerOcspResponse 函数将立即返回,而不会进行初始同步检索。

CertOpenServerOcspResponse 函数递增 pChainContext 参数表示的链上下文的引用计数。 使用完链上下文后,通过调用 CertCloseServerOcspResponse 函数关闭返回的句柄。

CertOpenServerOcspResponse 函数初始化以下函数所使用的配置设置:

首先, CertOpenServerOcspResponse 函数根据 Wincrypt.h 中的默认值初始化设置。 如果函数随后找到 CERT_CHAIN_CONFIG_REGPATH 中定义的注册表项,则会使用注册表值更新以前初始化的值。

以下配置设置名称和默认值由此函数初始化:

  • CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME

    L“SrvOcspRespMinValiditySeconds”

    CertGetServerOcspResponseContext 要返回的服务器 OCSP 响应的最短时间有效性。 OCSP 响应有效性必须足够长,以便客户端将其视为有效时间。

  • CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT

    (10 × 60)

    10 分钟。

  • CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME

    L“SrvOcspRespUrlRetrievalTimeoutMilliseconds”

    这是 OCSP 响应预提取线路 URL 检索超时之前的最长时间。

  • CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT

    (15 × 1000)

    15 秒。

  • CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME

    L“SrvOcspRespMaxBeforeNextUpdateSeconds”

    这是在 OCSP 响应的 NextUpdate 日期之前执行服务器 OCSP 响应预提取检索的最大秒数。 服务器 OCSP 响应线程将等待当前时间大于或等于 NextUpdate 日期减去此秒数,以执行预提取检索。

  • CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT

    (4 ×60 × 60)

    4 小时。

  • CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME

    L“SrvOcspRespMinBeforeNextUpdateSeconds”

    这是在 OCSP 响应的 NextUpdate 日期之前执行服务器 OCSP 响应预提取检索的最小秒数。 如果当前时间大于或等于 NextUpdate 日期减去此秒数,则服务器 OCSP 响应线程将等到 NextUpdate 日期之后加上 CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME 秒数,然后执行预提取检索。

  • CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT

    (2 × 60)

    2 分钟。

  • CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME

    L“SrvOcspRespMinAfterNextUpdateSeconds”

    这是在 OCSP 响应的 NextUpdate 日期之后执行服务器 OCSP 响应预提取检索的最小秒数。 当当前时间大于 NextUpdate 日期减去 CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME 秒数但小于 NextUpdate 日期时,服务器 OCSP 响应线程在 NextUpdate 日期之后等待此秒数来执行预提取检索。

  • CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT

    (1 × 60)

    1 分钟。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wincrypt.h
Library Crypt32.lib
DLL Crypt32.dll

另请参阅

CertCloseServerOcspResponse