据我所知并且提到here,浏览器有两种主要技术可以检查特定证书的撤销状态:使用在线证书状态协议(OCSP)或查找证书证书撤销清单(CRL)。
嗯,我知道有一些在线OCSP服务器或OCSP方法,浏览器在那里发送请求以检查传入证书是否被撤销,但我对CRL一无所知。
请注意,我知道我可以在命令行中使用certutil -urlcache crl
查看CRL缓存。但它是它的缓存!真实文件在哪里?
答案 0 :(得分:2)
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 stapling的情况下,Web服务器从发行者那里获得(签名的)OCSP响应,在TLS握手中包含它不变。
理论上,可以构建一些基于现有CRL文件提供OCSP响应的OCSP代理,但由于OCSP响应也已签名,因此该代理必须具有明确信任的证书,以便签署OCSP响应。