每个CA都有一个SSL证书吊销列表(CRL:Certificate Revocation List),当你访问一个HTTPS加密网站的时候浏览器会去你的证书CA对应的CRL中检查你的证书是否已经被吊销,如果被吊销则会警告用户,CRL的获取方式是内置在证书中的,你可以查看证书中的这个信息字段获取CA的CRL:
QQ图片20160824155055
以GeoTrust的证书为例,访问这个地址你可以获取到一个文件,这是一个windows可识别的文件类型,打开它:
QQ截图20160824155723
可以看到这个CRL的一些基本信息,包括对于的CA和该CRL下次更新发布的时间,而右边则是这个CLR中包含的吊销证书的序列号列表:
QQ截图20160824155951

那么问题来了,CRL的发布既然不是实时的,那么当一个用户在CA那边申请revoke一个证书,而CRL的发布却得几天甚至十几天,这段时间给用户造成了损失怎么办,此时就得使用另外一种检测方法了。

OCSP(On-line Certificate Status Protocol),在线证书状态检测协议。

同CRL,OCSP的信息也是内置在证书中的,你可以查看证书的这个字段来获取OCSP服务器的URL:
QQ截图20160824160702

如果说CRL是一种缓存手段,那么OCSP就是一种实时检查证书状态的方法,浏览器如果在CRL中没找到你的站点证书,那么就会去OCSP服务器那边最终确认该证书的有效性,当然,浏览器对于一次确认的有效时间就得看具体的浏览器实现了,所以一般在CA那边吊销一个证书,然后刷新浏览器,它是不会立马就告诉你该站证书被吊销的,得等浏览器内部的缓存到期了,然后重新去请求OCSP服务器或者刷新CRL列表,到时才会警告用户证书被吊销。

如果你要确认证书确实被吊销,你可以使用以下指令检查。

windows下执行:

certutil -f –urlfetch -verify [FilenameOfCertificate]

如果你的证书被吊销,在指令执行结果的最后你可以看到对于的提示:
QQ截图20160824161642

linux下执行:

待补充。。。

欢迎留言