什么是 OCSP?它和证书吊销列表(CRL)有什么区别?

证书被吊销后,浏览器要确认它是否真的失效,主要有两种方式:下载吊销清单逐条比对,或向签发机构实时查询。前者是证书吊销列表(CRL),后者是在线证书状态协议(OCSP)。两者各有缺陷,实际中常配合折中方案使用。

第 69 期介绍过,证书被吊销后,浏览器要确认证书状态。确认方式主要有两种,它们的运作机制不同。

证书吊销列表(CRL)是一份清单。证书签发机构(CA)定期发布被吊销证书的清单,浏览器或系统下载后逐条比对。这种方式的问题在于,清单会随着吊销证书增多而变大,下载和比对有开销,而且清单是定期更新的,两次更新之间新吊销的证书不会被及时发现。

在线证书状态协议(OCSP)改为实时查询。浏览器把证书的序列号发给 CA 的查询服务器,得到"有效、已吊销或未知"的回复。它比清单更及时,但带来新问题:每次查询都让 CA 知道用户在访问哪些网站,有隐私顾虑,查询也会增加延迟,查询失败时浏览器往往选择放行而非阻断。

为兼顾两者,出现 OCSP 装订(OCSP stapling)的做法:网站服务器替客户端向 CA 查询,把结果附在证书里一起发送,客户端不再单独查询。这样既省去客户端的查询开销,也避免把用户的浏览记录暴露给 CA。