大多数依赖于 X.509 证书的应用程序需要验证在执行身份验证、签名或加密操作时使用的证书的状态。在证书链中的所有证书(直至根证书)上执行这项证书有效性和吊销检查。如果根证书(或证书链中的任意证书)无效,无效证书以下的证书也无效。
验证涉及下列事项:
-
每个证书的签名有效。
-
当前日期和时间在每个证书的有效期内。
-
没有任何已损坏或格式不正确的证书。
此外,还将检查证书链中的每个证书的吊销状态。可以使用证书吊销列表 (CRL) 或联机证书状态协议 (OCSP) 响应执行吊销检查。
什么是 OCSP?
Microsoft 联机响应程序实现了 OCSP 协议,该协议使证书接收方可以使用超文本传输协议 (HTTP) 将证书状态请求提交到 OCSP 响应程序。此 OCSP 响应程序返回已进行数字签名的确定性响应,指示证书的状态。每个请求检索的数据量将保持不变,与 CA 中的已吊销证书数无关。
有关详细信息,请参阅 RFC 2560“X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP”(
联机响应程序
Microsoft 实现的 OCSP(联机响应程序)分为客户端组件和服务器组件。客户端组件内置在 CryptoAPI 2.0 库中,而服务器组件作为 Active Directory 证书服务 (AD CS) 服务器角色提供的一项新服务引入。以下过程介绍客户端组件和服务器组件如何进行交互:
-
应用程序尝试验证指定 OCSP 响应程序的位置的证书时,客户端组件先搜索本地内存和磁盘缓存,寻找包含最新吊销数据的缓存的 OCSP 响应。
-
如果没有找到可接受的缓存响应,则将使用 HTTP 协议向联机响应程序发送请求。
-
联机响应程序 Web 代理对请求进行解码并验证请求。如果请求有效,将在 Web 代理缓存中检查填充请求所需的吊销信息。如果缓存中没有最新的信息,则将请求转发到联机响应程序服务。
-
联机响应程序服务接受请求并检查本地 CRL(如果可用)以及 CA 颁发的最新 CRL 的缓存副本。
-
如果本地吊销列表或缓存吊销列表中未出现该证书,吊销提供程序将从吊销配置中列出的位置获取更新的 CA CRL(如果可用),以检查证书的状态。然后,提供程序将证书状态返回到联机响应程序服务。
-
Web 代理对响应进行编码并发送回客户端,以通知客户端证书有效。同时,还会将响应副本缓存一段有限的时间,以便供有关此证书的其他状态请求使用。