3

据我所知,正如这里提到的,浏览器有两种主要技术可以检查特定证书的吊销状态:使用在线证书状态协议 (OCSP) 或在证书吊销列表 (CRL) 中查找证书.

好吧,我知道有一些在线 OCSP 服务器或 OCSP 方法,浏览器会在那里发送请求以检查传入的证书是否被吊销,但我对 CRL 没有任何想法。

  1. CRL 在哪里?它是我系统中的一个在 OCSP 请求后更新的文件,还是我试图连接的 Web 服务器中的一个列表?
  2. 谁更新它?
  3. OCSP 服务器如何检查吊销?(我的意思是它如何更新其撤销证书的数据库?)

请注意,我知道我可以certutil -urlcache crl在命令行中看到 CRL 的缓存。但它是它的缓存!真正的文件在哪里?

4

1 回答 1

4

CRL 在哪里?它是我系统中的一个在 OCSP 请求后更新的文件,还是我试图连接的 Web 服务器中的一个列表?

CRL 是证书颁发者提供的列表。该列表包含序列号和撤销证书的撤销原因,并由颁发者(或其他一些直接或间接受信任的 CA)签名。原始 CRL 文件在发行者处创建和存储。它通常通过 http/https 提供,但存在其他机制。要了解哪个 URL 为特定证书提供 CRL,请查看证书的“CRL 分发点”属性。请注意,由同一个 CA 颁发的许多证书共享同一个 CRL 分发点。

CRL 的本地副本在您的系统上的位置,它以何种格式存储在那里等取决于操作系统、浏览器、库......我怀疑它是否会根据 OCSP 响应进行更新,因为 OCSP 和 CRL 是独立的机制检查吊销,客户端通常只使用其中之一来检查特定证书的吊销。但它可能在某些情况下使用 OCSP,而在其他情况下使用 CRL(没有提供 OCSP)。

它更新谁?

这取决于。浏览器通常不再使用 CRL,而是移至 OCSP,完全跳过撤销检查或移至其他机制,例如CRLSets。如果任何其他应用程序使用 CRL 作为证书 - 它可能取决于应用程序。

OCSP 服务器如何检查吊销?(我的意思是它如何更新其撤销证书的数据库?)

它不检查撤销。OCSP 服务器由证书颁发者本身提供,证书颁发者本身已经拥有已撤销证书的列表(因为颁发者自己撤销了这些证书),或者在OCSP 装订的情况下,Web 服务器从颁发者那里获取(签名的)OCSP 响应并将其包含在不变在 TLS 握手中。

理论上,可以构建一些 OCSP 代理,它基于现有的 CRL 文件提供 OCSP 响应,但由于 OCSP 响应也已签名,因此该代理必须具有明确信任的证书,用于签署 OCSP 响应。

于 2015-09-07T05:23:26.793 回答