关于 OCSP 和 CRL,小编转自知乎“刘叔 咸鱼”的一篇较通俗易懂的描述:
OCSP(Online Certificate Status Protocol )是TLS协议的扩展协议,在TLS的使用中,客户端无法判断一个还没有过期的证书是否被吊销了。因为CA在颁发了证书之后大部分情况下都是等待这个证书过期了之后的自然失效,而如果CA出于某些原因要人为的吊销某个证书就没有了办法。CA吊销这个证书肯定是有考虑的,所以客户端为了自身的安全也应该支持CA的这种需求。这个时候客户端在从服务端拿到了一个证书之后,去找服务端的接口去验证一下这个证书的是否过期这一信息。客户端由于网络有各种各样的情况,每个连接去验证国外的服务器的话就会带来完全不可控的用户体验和访问延时,并且对于CA来说也是一个不小的并发连接。所以OCSP一般会被应用到服务端,给客户端节省这部分的时间。服务端周期性的去连接CA的OCSP服务器,验证一个证书的合法性,存储在本地。当客户端与服务端进行TLS握手的时候,服务端在传送了证书链之后(certificate消息),会继续再传输一个certificate status消息,这个status消息就是服务端从 CA 的OCSP服务器那里获得而来的证书吊销状态信息,双方仍然是通过密码学的方式保证了客户端可以确认这个确认消息来源于CA。
在OCSP出现之前还有一个CRL协议,这个协议的思路是客户端通过定期的去CA那里请求一个被吊销的证书列表,作为本地缓存,从而之后对服务器证书的验证就可以依赖这个缓存。但是这个方案需要客户端去管理一个本地缓存,这相当于把所有的责任都扔给了客户端。客户端访问CA的服务器的带宽和稳定性都存在疑问,所以这种方案是注定要输给服务端的解决方案的。
而关于 OCSP 和 CRL,相比各位已经大概了解其作用,我们今天讲的是 DigiCert 这款目前是大的 CA 品牌在中国部署的本地化服务。
以下为国外版 DigiCert 和中国定制版 DigiCert 证书的 OCSP 和 CRL 服务响应测试(仅供参考)。
DigiCert ICA 版本 | OCSP/CRL地址 | 大陆平均延时 | 平均延时 |
DigiCert 国外版 | ocsp.digicert.com crl3.digicert.com crl4.digicert.com | 138ms | 28.1ms |
DigiCert 中国版 | ocsp.digicert.cn crl.digicert.cn | 15.0ms 28.1ms | 25.8ms 32.7ms |
环度网信所签发的 DigiCert Basic SSL证书使用了 G2 版的中国定制版 ICA 证书。
除了响应速度之外,DigiCert 中国定制版 ICA 服务还做了相应的 ICP 备案,更符合中国法律法规。