证书撤销列表 (CRL) 存储在哪里?

Where are the Certificate Revocation List (CRL) stores?

据我所知和提到的 here 浏览器有两种主要技术来检查特定证书的吊销状态:使用在线证书状态协议 (OCSP) 或查找证书吊销列表 (CRL) 中的证书。

嗯,我知道有一些在线 OCSP 服务器或 OCSP 方法,浏览器会向那里发送请求以检查传入的证书是否已被吊销,但我对 CRL 一无所知。

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

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

Where is CRL? Is it a file in my system that updated after OCSP requests or it is a list in the web server that I'm trying to connect to?

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

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

Who it updates?

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

How OCSP server check revocation? (I mean how it update its database of revoked certificates?)

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

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