
# HTTP(S)协议接入
#### 概述
HTTPS是基于HTTP协议，通过SSL加密的一种安全通信协议。IoTDA物联网平台支持HTTPS协议通信。该协议多使用在需要进行数据采集和分析的场景中，因为HTTP协议能够高效地传输和处理结构化数据；或应用在设备需要采用短连接且仅需单向上传数据的场景。
HTTPS协议鉴权是指设备通过调用HTTPS协议设备鉴权接口并携带设备ID和使用算法加密后的密钥，以完成设备的接入鉴权。鉴权成功后可以建立设备与平台间的连接，并且平台会返回用于业务处理的access_token。
#### 使用限制
- 在调用属性上报、消息上报等其他HTTPS协议接口时，都需要携带access_token信息。
- 如果access_token超期，需要重新认证设备获取access_token。
- 如果access_token未超期重复获取access_token，原access_token在未超期前保留30s，30s之后失效。
表1HTTP(S)协议接入使用限制 
| 描述                    | 限制                                                                                                                                                                        |
|:---|:---|
| 支持的HTTP协议版本           | 支持 Hypertext Transfer Protocol --- HTTP/1.0 协议 支持 Hypertext Transfer Protocol --- HTTP/1.1 协议 |
| 支持HTTPS协议             | 物联网平台仅支持HTTPS协议，证书下载请参考[证书资源](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section3)。                                                                     |
| 支持的TLS版本              | TLS 1.2                                                                                                                                                                   |
| 支持的body体最大长度          | 1MB                                                                                                                                                                       |
| 接口规格说明                | 请参考[产品规格说明](https://support.huaweicloud.com/productdesc-iothub/iot_04_0014.html)。                                                                                         |
| 网关上报子设备属性时一次最大可上报子设备数 | 50                                                                                                                                                                        |
| 数据下行                  | 不支持                                                                                                                                                                       |
   
#### 调用说明
物联网平台的Endpoint请参见：[地区和终端节点](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section0)。
![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
使用"设备接入-\> HTTPS(443)"对应的Endpoint，端口为443。
#### 使用HTTPS协议接入的鉴权流程
图1HTTPS协议接入鉴权流程图   
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002339128173.png "点击放大")
1. 通过调用注册接口向物联网平台发送注册请求或者在控制台上注册设备。
2. 物联网平台向设备分配全局唯一的设备ID （deviceId）和密钥（secret）。
   ![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
   密钥可以在注册设备时自定义，如果没有定义，平台将自动分配密钥。
   
3. 设备登录时，调用HTTPS协议设备鉴权接口并携带设备ID和使用"HMACSHA256"算法签名后的密钥（以时间戳为key，对平台分配的密码进行签名后的值，参考[密钥生成工具](https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/)），向平台发起接入鉴权请求。
4. 平台验证通过后，返回成功响应，设备连接物联网平台成功。
 
#### 接入实践
设备使用HTTPS协议接入平台时，平台和设备通过HTTPS接口调用通信。通过这些接口，平台和设备可以实现设备鉴权、消息上报及属性上报。
表2消息类型 
| 消息类型                                                                               | 说明                                                   |
|:---|:---|
| 设备鉴权[设备鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_7008.html)         | 用于设备获取鉴权信息access_token。                              |
| 设备属性上报[设备属性上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_7010.html)     | 用于设备按产品模型中定义的格式将属性数据上报给平台。                           |
| 设备消息上报[设备消息上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_7009.html)     | 用于设备将自定义数据上报给平台，平台将设备上报的消息转发给应用服务器或华为云其他云服务上进行存储和处理。 |
| 网关批量属性上报[网关批量属性上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_7011.html) | 用于网关设备将多个子设备的属性数据一次性上报给平台。                           |
   
1. 创建产品（可通过控制台创建或者使用应用侧API[创建产品](https://support.huaweicloud.com/api-iothub/iot_06_v5_0050.html)）。
2. 产品创建完毕后，注册设备（可通过控制台[注册单个设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0031.html)或者使用应用侧API[注册设备](https://support.huaweicloud.com/api-iothub/iot_06_v5_0046.html)创建）。
3. 设备注册完毕后，通过设备鉴权接口[设备鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_7008.html)获取设备的access_token。
   图2获取设备access_token   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305248854.png "点击放大") 
4. 获取到access_token之后，可以使用消息上报[设备消息上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_7009.html)/属性上报[设备属性上报](https://support.huaweicloud.com/api-iothub/iot_06_v5_7010.html)等功能。其中access_token放于消息头中，下面示例为上报属性：
   图3上报属性   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305089162.png "点击放大")
   图4上报属性   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002339128177.png "点击放大") 
 
