# 证书有效性验证（OCSP）
#### 概述
IoTDA平台使用OCSP协议校验设备侧和服务器侧证书的有效性。[OCSP](https://www.rfc-editor.org/rfc/rfc6960.html)是在线证书状态协议（Online Certificate Status Protocol）的缩写，OCSP在传输安全层（TLS）握手期间检查证书吊销状态，对证书进行实时验证，与传统的证书吊销列表（CRL）相比，CRL更新频率较低，文件更大，而OCSP扩展性更强，响应更小更快，更具有实时性，更适合公开密钥基础架构（PKI）。
#### 使用场景和名词解释
**OCSP** **校验**：本文统一指定为物联网平台对设备侧证书的有效性校验。用于证书认证的设备，平台对设备证书状态校验，检查设备证书是否已经被CA机构吊销。
**OCSP装订（OCSP Stapling）**：用于设备侧对服务器证书状态校验，OCSP装订会持续检查服务器证书的吊销状态；也称服务端OCSP，是TLS证书状态查询扩展，作为在线证书状态协议的替代方法对X.509证书状态进行查询。服务器主动检查自身证书状态，在TLS握手时发送已缓存的OCSP响应，用户只需验证该响应的时效性而不用再向数字证书认证机构(CA)发送请求，可以加快握手速度。
#### 约束与限制
- 仅企业实例支持该功能。
- 开启OCSP校验后，设备第一次连接平台由于平台要向OCSP服务器发请求，可能会导致建链时长变长，属正常现象，后续建链不受影响。
- 平台对OCSP服务器的响应缓存时长为24小时。
- 平台对OCSP服务器响应限制超时时间为5秒，响应大小不超过4k。
 
#### 使用说明
图1OCSP工作流程   
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002339127997.png "点击放大")
#### 操作步骤
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 在左侧导航栏中选择"设备 \> 设备证书"，进入设备证书页面选择对应CA证书，单击"证书设置"开启校验。 
   图2CA证书-开启OCSP验证   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002512564909.png "点击放大")
   
   
3. 若OCSP服务器访问方式为https协议，则在左侧导航栏中选择"设备 \> 设备证书 \> CA证书"，单击"上传证书"，上传OCSP服务器CA证书。 
   返回设备接入控制台选择对应实例，单击"详情"进入实例详情页面，单击"自定义域名详情"单击"编辑"开启OCSP装订。若OCSP服务器访问方式为https协议，单击"SSL验证"并关联服务端CA证书。
   查看证书是否支持OCSP以及OCSP server url，双击证书如下图所示：
   图3查看ocsp_url   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305248702.png "点击放大")
   图4实例管理-开启OCSP装订   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002314234461.png "点击放大")
   ![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
   - 开启OCSP装订签名证书链必须包含上层CA证书。
   
   - 开启OCSP签名证书信息中必须包含ocsp url扩展字段。
    
   
   
4. 使用支持ocsp的MQTT模拟器连接平台，查看平台证书OCSP装订信息，使用抓包工具在本地抓取设备建链TLS握手报文，查看平台证书OCSP响应。证书状态共有三种类型分别是：good，revoked与unknown，设备可判断平台证书状态选择是否建立连接，比如：仅good状态下才与平台建链。 
   图5TLS-Certificate Status good   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305089022.png "点击放大")
   图6TLS-Certificate Status revoked   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002339128053.png "点击放大")
   图7TLS-Certificate Status unknown   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002338968225.png "点击放大")
   ![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
   客户端Client Hello报文中需要携带status_request扩展字段服务端才会返回Certificate Status。
   图8status request   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305248738.png "点击放大")
   
   
5. 在左侧导航栏中选择"设备 \> 所有设备"，选择对应设备，单击"详情 \> 消息跟踪 \> 启动消息跟踪"，使用MQTT模拟器证书双向认证，设备端使用已吊销证书，查看消息跟踪错误详情。若设备证书已被吊销，建议使用新的有效证书接入，若证书泄漏建议及时吊销状态。 
   图9设备证书-已吊销   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305089050.png "点击放大")
   图10消息跟踪-OCSP校验失败详情   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002085845457.png "点击放大")
   
   
 
