最近公司的服务遇到了个问题,一些内容在iOS里面需要十几二十秒的白屏之后才能显示正常。定位到最后发现是OCSP的问题。
OCSP是什么
OCSP(Online Certificate Status Protocol,在线证书状态协议)是一种用于检查数字证书状态的网络协议。OCSP的主要功能是验证证书的有效性,以确定其是否被吊销。
OCSP是作为证书吊销列表CRL而出现的。 CRL是一个维护已撤销证书的列表,由浏览器下载,检查客户端访问的网站证书是否被撤销。但随着证书越来越多,这种黑名单机制势必性能会变差,因此有了OCSP协议。
OCSP的工作流程
OCSP的工作流程大致如下:
- 客户端请求:客户端向OCSP服务器发送一个请求,包含需要验证的证书的标识信息。
- OCSP服务器响应:OCSP服务器查询其数据库,返回该证书的状态信息。
- 客户端处理:客户端根据OCSP服务器的响应,决定是否信任该证书。
OCSP的优点包括:
- 实时性:OCSP提供了实时的证书状态信息,而CRL可能会有延迟。
- 效率:OCSP请求通常比下载整个CRL文件要小得多,节省了带宽和时间。
OCSP有一些潜在的缺点,例如:
- 隐私问题:每次验证证书时,客户端需要与OCSP服务器通信,这可能会暴露用户的浏览行为。
- 可用性问题:如果OCSP服务器不可用,客户端可能无法验证证书的状态。
OCSP Stapling
OCSP Stapling(OCSP 封套),是指服务端在证书链中包含颁发机构对证书的 OCSP 查询结果。这是一种向浏览器提供撤销信息的技术。证书stapling过程涉及将当前的OCSP响应附加到HTTPS连接中。这样,服务器和浏览器之间的流量就会减少,因为浏览器不再需要自行请求OCSP。这有助于解决上述的隐私和性能问题。
问题所在
OCSP一个最大的问题就是实时查询的时候,会影响到性能
公司使用的证书是Godaddy,Godaddy并没有中国区,所以中国iOS区域的用户在OCSP这一步出现了访问的时间延长。
查看网站证书概要
1 | echo | openssl s_client -servername example.com -connect example.com:443 | openssl x509 -noout -issuer |
处理方案
考虑到国内用户的体量与部署,我们最终将网站的证书切换到了有国内部署的global sign