网站导航:首页-计算机网络知识-从OCSP到OCSP must-staple

从OCSP到OCSP must-staple

  HTTPS是通过在HTTP的基础上加入SSL层,利用数字证书来保证通信不被窃听和篡改。这种模式的安全性在于私钥的绝对隐藏,为了防止私钥泄漏带来的危害,数字证书颁发机构(CA)可以帮助用户吊销证书,证书被吊销后,就不会在被客户端信任了。众所周知,目前常用的证书吊销方式有证书吊销列表(Certificate Revocation List,CRL)和在线证书状态协议(Online Certificate Status Protocol,OCSP)。本文只对OCSP做简单介绍。


OCSP如何工作及其存在的问题

  在CA颁发证书时,就会在证书中写明此证书OCSP的验证地址,由于整个证书中有CA的签名,所以这个信息并不会被篡改。客户端在收到证书后并验证签名后,可以向证书中列出的这个接口发出请求,根据CA的响应来判断此证书当前的吊销状态,从而根据此证书的吊销状态来决定是否信任此证书。

  但在此过程中,存在两个问题:

  一、客户端与目标服务器建立连接并得到目标服务器的证书后,还需要与CA服务器建立连接去验证证书状态,此过程会增加页面加载时间;
  二、如果由于黑客攻击或网络故障等原因导致客户端无法与CA服务器建立连接,则无法获取证书吊销状态,只能按照浏览器预定规则,接收(可能存在风险)或拒绝(可能会误伤)这个证书。


OCSP Stapling的作用

  OCSP Stapling是在客户端向目标服务器发起请求后,由目标服务器端向CA服务器获取证书的吊销状态并在目标服务器中缓存一段时间,此吊销状态具有CA服务器签名的,可以保证无法被篡改。在目标服务器向客户端发送证书的同时,也将这个已经获取的证书吊销状态发送给客户端。这样在客户端在验证签名后,可以直接使用目标服务器返回的这个吊销结果,就不必自行去CA服务器验证了。

  这个过程看上去很完善,但OCSP Stapling是需要服务器端支持的,只要私钥的非法持有者不开启OCSP Stapling功能,被吊销的证书还是有可能被黑客利用。针对此原因,就提出了证书的另一个扩展OCSP must-staple。


OCSP must-staple及其配置

  OSCP must-staple是证书上的一个标记,客户端收到具有此标记的证书,但却没有收到OCSP Stapling则会拒绝此证书,这样就保证了被吊销的证书不会被非法利用,那么如何生成带有此扩展的证书呢?首先目前并不是所有的CA都支持签发具有次标记的证书,据本站所知,目前只有Let's encrypt可以签发带有此扩展的证书。其次,在生成证书CSR前,需要进行如下配置(下例是利用OpenSSL生成CSR的配置):

  修改openssl.cnf中的内容,在[v3_req]中添加1.3.6.1.5.5.7.1.24 = DER:30:03:02:01:05

openssl.cnf中[v3_req]的内容

  如果是使用openssl 1.1.0或更高的版本,可以这样设置:添加tlsfeature=status_request即可。

1.1.0或更高的版本中openssl.cnf中[v3_req]的内容

  使用以上配置生成的CSR,提交给支持OCSP must-staple的CA签发出的证书就带有OCSP must-staple扩展了。

已经到本页底线啦,您可以:返回目录页|返回首页