3.4 OCSP功能
目前PKI系统实现证书状态(是否被吊销)检查的方法主要由:证书吊销列表(Certificate Revocation List, CRL)和在线证书状态查询协议(Online Certificate Status Protocol,OCSP)。OCSP可以实现证书状态的在线查询,具有更强的时效性,在金融、证券、政府等对安全性有较高要求的地方有广泛需求。
3.4.1 功能实现
OCSP的消息交互主要是,client发送request证书状态请求信息报文,包含所需查询的证书的序列号及相关信息,服务器收到后返回响应,包含此证书当前的状态(good,unknown,revoked)及证书吊销的原因等信息。
- OCSP请求报文如下:
发布者名称散列(issuerNameHash)是发布者名称的散列。
发布者密钥散列(issuerKeyHash)是发布者公钥的散列。
所有这些使用的散列算法都由散列算法域(hashAlgorithm)确定。
序列号域(serialNumber)是被查询证书的序列号。
除了对CA名称进行散列还对CA的公钥进行散列。这样做的主要原因是为了识别发布者,因为两个CA可能选择同一名称。
- OCSP响应报文如下:
返回的证书状态可能有3种:
(1) good状态,表示此证书的状态正常
(2) revoked状态,表示此证书已经被吊销
(3) unknown状态,表示CA不对应,无法在当前CA服务器上查询到此证书的信息。
时间相关:
- ThisUpdate 此次更新时间:此证书状态被表示为正确的时间
- NextUpdate 下次更新时间:在此时间之后,可获得此证书状态的新近消息
(3) ProductAt 产生时间:OCSP签名这个回复的时间
3.4.2 OCSP响应缓存
配置说明:
如果不配置response-cache-refresh-interval,那么是否缓存OCSP响应由response的next-Update字段决定。
- 如果next-update可用,就缓存当前的response of the Certificate,下次检验证书可用性,只有指明的next-update时间之后才会再次发出OCSP Request重新获取证书撤销消息。
- 如果next-update值不可用,client不缓存OCSP证书撤销状态,每当证书可用性检查需要时会做检查。
如果配置response-cache-refresh-interval为0,即不缓存。
如果配置response-cache-refresh-interval为非0,即开启了本地缓存OCSP response机制,
- 当OCSP response中的next-update也是可用的,会取两者间距当前时间最近的时间点来更新OCSP response。
- 当OCSP response中的next-update不可用,按照本地缓存机制缓存。
3.4.3 Nonce扩展
开启nonce后,与OCSP服务器通信时发送的OCSP请求中带有Nonce扩展,内容为随机数。通过该功能可以增强实体与OCSP服务器通信时的安全性和可靠性,防止重放攻击。
3.4.4 OCSP命令行
(1)配置OCSP的检查方式:
ocsp { nocheck | optional | required }
(2)在ocsp配置模式下,配置URL
(3)ocsp缓存
response-cache-refresh-interval <0-1440>
(4)nonce的开启与关闭
nonce { disable | enable }