更新时间:2025-06-26 GMT+08:00
分享

证书鉴权使用说明

概述

MQTT(S)协议-证书鉴权是指在设备接入物联网平台前,用户通过控制台上传设备CA证书,然后应用服务调用创建设备接口或通过控制台在物联网平台注册设备,获取设备ID。在设备接入物联网平台时携带设备侧X.509证书(一种用于通信实体鉴别的数字证书),完成设备的接入鉴权。

约束与限制

  • 当前物联网平台只支持基于MQTT(S)协议接入的设备使用X.509证书进行设备身份认证。
  • 每个用户最多上传100个设备CA证书;可多个设备共用一个CA证书。

使用MQTT(S)协议-证书接入的鉴权流程

图1 MQTT(S)协议-证书接入鉴权流程图
  1. 在控制台上传设备CA证书。
  2. 通过调用注册接口向物联网平台发送注册请求或者在控制台上注册设备。

    注册时需要填写设备标识码,通常使用MAC地址,Serial No或IMEI作为nodeId。

    物联网平台向设备分配全局唯一的设备ID(deviceId)。

  3. 设备登录时,携带设备侧X.509证书发起接入鉴权请求。
  4. 平台验证通过后,返回成功响应,设备连接物联网平台成功。

上传设备CA证书

  1. 在左侧导航栏选择设备 > 设备证书,进入“设备CA证书”页签,选择资源空间,单击“上传证书”
  2. 在弹出的对话框中,单击“添加文件”,然后单击“确定”

    图2 设备CA证书-上传证书
    • 设备CA证书由设备厂商提供,调测时可自行制作调测证书,商用时建议更换为商用证书,否则会带来安全风险。
    • CA 证书具有一个过期日期,在该日期后,这些证书将无法用于验证服务器的证书;请在 CA 证书的过期日期前替换这些证书,以确保设备可以正常的连接到IoT平台。

设备CA调测证书制作流程

本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书。

  1. 在浏览器中访问这里,下载并进行安装OpenSSL工具。
  2. 以管理员身份运行cmd命令行窗口。
  3. 执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。
  4. 执行以下命令生成密钥对。
    openssl genrsa -out rootCA.key 2048
  5. 执行以下命令,使用密钥对中的私有密钥生成 CA 证书。
    openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
    图3 生成CA 证书

    系统提示您输入如下信息,所有参数可以自定义。

    • Country Name (2 letter code) [AU]:国家,如CN。

    • State or Province Name (full name) []: 省份,如GD。

    • Locality Name (for example, city) []:城市,如SZ。

    • Organization Name (for example, company) []:组织,如Huawei。

    • Organizational Unit Name (for example, section) []:组织单位,如IoT。

    • Common Name (e.g. server FQDN or YOUR name) []: 名称,如zhangsan。

    • Email Address []:邮箱地址,如1234567@163.com。

    在openssl安装目录的bin文件夹下,获取生成的CA证书(rootCA.pem)。

上传验证证书

如果上传的是调测证书,上传后证书状态显示为“未验证”,您需要上传验证证书,来证明您拥有该CA证书。

图4 设备CA证书-未验证证书

验证证书是由设备CA证书对应的私钥创建的,请参考如下操作制作验证证书。

  1. 获取验证证书的验证码。

    图5 设备CA证书-验证证书
    图6 设备CA证书-获取验证码

  2. 执行如下命令为私有密钥验证证书生成密钥对。

    openssl genrsa -out verificationCert.key 2048

  3. 执行如下命令为私有密钥验证证书创建CSR(Certificate Signing Request)。

    openssl req -new -key verificationCert.key -out verificationCert.csr

    系统提示您输入如下信息,Common Name填写为验证证书的验证码,其他参数自定义。

    • Country Name (2 letter code) [AU]:国家,如CN。

    • State or Province Name (full name) []: 省份,如GD。

    • Locality Name (for example, city) []:城市,如SZ。

    • Organization Name (for example, company) []:组织,如Huawei。

    • Organizational Unit Name (for example, section) []:组织单位,如IoT。

    • Common Name (e.g. server FQDN or YOUR name) []:验证证书的验证码,请参考1获取 。

    • Email Address []:邮箱地址,如1234567@163.com。

    • Password[]:密码。
    • Optional Company Name[]:公司名称,如Huawei。

  4. 执行以下命令使用CSR创建私有密钥验证证书。

    openssl x509 -req -in verificationCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out verificationCert.pem -days 500 -sha256

    在openssl安装目录的bin文件夹下,获取生成的验证证书(verificationCert.pem)。

  5. 选择对应证书,单击然后单击“上传验证证书”

    图7 设备CA证书-验证证书

  6. 在弹出的对话框中,单击“添加文件”,然后单击“确定”。

    图8 设备CA证书-上传验证证书

    上传验证证书后,证书状态变为“已验证”,表明您拥有该CA证书。

预置X.509证书

在注册X.509设备之前,您需要在设备侧预置CA机构签发的X.509证书。

X.509证书由CA机构签发,若没有CA机构签发的商用证书,您可以自己制作设备CA调测证书

制作X.509调测证书

  1. 以管理员身份运行cmd命令行窗口,执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。
  2. 执行如下命令生成密钥对。
    openssl genrsa -out deviceCert.key 2048
  3. 执行如下命令为设备证书创建CSR(Certificate Signing Request)。
    openssl req -new -key deviceCert.key -out deviceCert.csr

    系统提示您输入如下信息,所有参数可以自定义。

    • Country Name (2 letter code) [AU]:国家,如CN。

    • State or Province Name (full name) []: 省份,如GD。

    • Locality Name (for example, city) []:城市,如SZ。

    • Organization Name (for example, company) []:组织,如Huawei。

    • Organizational Unit Name (for example, section) []:组织单位,如IoT。

    • Common Name (e.g. server FQDN or YOUR name) []: 名称,如zhangsan。

    • Email Address []:邮箱地址,如1234567@163.com。

    • Password[]:密码。
    • Optional Company Name[]:公司名称,如Huawei。
  4. 执行以下命令使用CSR创建设备证书。
    openssl x509 -req -in deviceCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out deviceCert.pem -days 500 -sha256

    在openssl安装目录的bin文件夹下,获取生成的设备证书(deviceCert.pem)。

注册X.509证书认证的设备

  1. 访问设备接入服务,单击管理控制台进入设备接入控制台。
  2. 在左侧导航栏选择设备 > 所有设备,单击“注册设备”,按照如下表格填写参数后,单击“确定”

    图9 设备-注册X.509设备

    参数名称

    说明

    所属资源空间

    选择设备所属的资源空间。

    所属产品

    选择设备所属的产品。

    设备标识码

    即node_id,填写为设备的IMEI、MAC地址或Serial No;若没有真实设备,填写自定义字符串,由英文字母和数字组成

    设备名称

    即device_name,可自定义。

    设备认证类型

    X.509证书:设备使用X.509证书验证身份。

    指纹

    “设备认证类型”选择“X.509证书”时填写,导入设备侧预置的设备证书对应的指纹,在OpenSSL执行openssl x509 -fingerprint -sha256 -in deviceCert.pem命令可查询。注:填写时需要删除冒号

    图10 OpenSSL执行样例

连接鉴权

参考连接鉴权接口文档,使用MQTT.fx工具激活在物联网平台上注册的设备。

  1. 下载MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载MQTT.fx),安装MQTT.fx工具。

    • 安装最新版MQTT.fx工具,可单击此处下载
    • MQTT.fx 1.7.0及旧版本对带有$的主题(Topic)处理存在问题,请使用最新版本进行测试。

  2. 进入设备信息页面,单击MQTT连接参数,查看设备的连接信息(ClientId、Username、Password)。

    图11 设备-连接参数

    参数

    必选/可选

    类型

    参数描述

    ClientId

    必选

    String(256)

    一机一密的设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳,通过下划线“_”分隔。

    • 设备ID:指设备在平台成功注册后生成的唯一设备标识,通常由设备的产品ID和设备的NodeId通过分隔符“_”拼装而来。
    • 设备身份标识类型:固定值为0,表示设备ID。
    • 密码签名类型:长度1字节,当前支持2种类型:
      • “0”代表HMACSHA256不校验时间戳。
      • “1”代表HMACSHA256校验时间戳。
    • 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。

    Username

    必选

    String(256)

    设备ID。

    设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。

    使用生成工具生成的clientId格式,默认不校验时间戳:设备ID_0_0_时间戳。

    • 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
    • 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。

    connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。

  3. 打开MQTT.fx软件,单击“设置”图标。

    图12 MQTT.fx软件-设置

  4. 填写“Connection Profile” 相关信息。

    图13 General-可以使用工具默认信息

    参数名称

    说明

    Broker Address

    填写从设备接入服务控制台获取的平台对接信息,此接入地址为域名信息。不能通过域名接入的设备,通过在cmd命令框中执行“ping 域名”获取IP地址,用IP地址接入平台。由于IP地址不固定,您需要将IP地址做成可配置项。

    Broker Port

    为8883。

    Client ID

    设备clientID,请参考2中获取。

  5. 单击“User Credentials”填写“User Name”

    图14 填写设备ID

    参数名称

    说明

    User Name

    即设备ID,请参考2中获取。

    Password

    使用X.509证书认证时不需要填写。

  6. 单击“SSL/TLS”配置鉴权参数,然后单击“Apply”。选择开启 “SSL/TLS”,勾选“ Self signed certificates”,配置相关证书内容。

    图15 填写SSL/TLS相关参数
    • CA File为对应的CA证书。下载并获取证书(加载pem格式的证书),获取证书请根据需要在资源获取里下载。
    • Client Certificate File为设备的设备证书(deviceCert.pem)。
    • Client Key File为设备的私钥(deviceCert.key)。

  7. 单击“Connect”,设备鉴权成功后,在物联网平台可以看到设备处于在线状态。

    图16 设备列表-设备在线

相关文档