MQTT协议接入 - X.509证书认证
MQTT协议接入 - X.509证书认证
X.509是一种用于通信实体鉴别的数字证书,物联网平台支持设备使用自己的X.509证书进行认证鉴权。使用X.509认证技术时,设备无法被仿冒,避免了密钥被泄露的风险。
注册X.509证书认证的设备前,您需要先在物联网平台上传设备的CA证书,然后在注册设备时将设备证书同设备进行绑定。本文介绍如何在物联网平台上传设备CA证书,以及注册X.509证书认证的设备。
基本流程
自制设备CA根证书(或找CA机构签发)eg:lightRootCA.pem,lightRootCA.key
将lightRootCA.pem上传至 “设备接入> CA证书” 页面,上传后会生成验证码。同时保存好lightRootCA.pem,lightRootCA.key用于后续签发验证证书和设备连接CA证书
使用设备CA根证书和密钥签出认证证书verificationCert.pem,在签发过程中的Common Name项中填入上传lightRootCA.pem获取的验证码
验证通过后,使用设备CA根证书开始制作用于设备连接的CA证书,eg:deviceCert.pem,deviceCert.key
服务端根证书下载地址 从该地址下载 服务端根证书,搭配deviceCert.pem,deviceCert.key连接到服务器
限制说明
当前只有通过MQTT接入的设备支持使用X.509证书进行设备身份认证。
每个实例最多上传100个设备CA根证书。
制作设备CA根证书详细流程(自签用于调试测试)
本文以Windows环境为例,介绍通过Openssl工具制作调测证书的方法,生成的证书为PEM编码格式的证书。
在浏览器中访问这里,下载并进行安装OpenSSL工具。
以管理员身份运行cmd命令行窗口。
执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。
执行以下命令生成生成密钥对。(建议设备CA根证书和密钥名称带一些信息,以方便之后找到该设备根CA根证书和密钥签出设备连接证书)
openssl genrsa -out lightRootCA.key 2048
执行以下命令,使用密钥对中的私有密钥生成 CA 证书。
openssl req -x509 -new -nodes -key lightRootCA.key -sha256 -days 1024 -out lightRootCA.pem
系统提示您输入如下信息,所有参数可以自定义。
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) []:组织,如Das。
Organizational Unit Name (for example, section) []:组织单位,如IoT。
Common Name (e.g. server FQDN or YOUR name) []: 名称(不为空!可以填入根证书相关信息),如das light。
Email Address []:邮箱地址,如1234567@163.com。
在openssl安装目录的bin文件夹下,可以看到lightRootCA.pem和lightRootCA.key,将lightRootCA.pem上传到平台,上传后证书状态显示为“未验证”,并附带有验证码,要想使用该设备CA根证书需要上传验证证书
上传验证证书详细流程
验证证书是用来证明您拥有该设备CA根证书。验证证书是由设备CA根证书对应的私钥创建的,请参考如下操作制作验证证书。
执行如下命令为私有密钥验证证书生成密钥对。
openssl genrsa -out verificationCert.key 2048
执行如下命令为私有密钥验证证书创建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) []:组织,如Das。
Organizational Unit Name (for example, section) []:组织单位,如IoT。
Common Name (e.g. server FQDN or YOUR name) []:验证证书的验证码必填!!!在对应的设备CA根证书的详情页面获取
Email Address []:邮箱地址,如1234567@163.com。
Password[]:密码,如1234321。
Optional Company Name[]:公司名称,如Das。
执行以下命令使用CSR创建私有密钥验证证书。
openssl x509 -req -in verificationCert.csr -CA lightRootCA.pem -CAkey lightRootCA.key -CAcreateserial -out verificationCert.pem -days 500 -sha256
在openssl安装目录的bin文件夹下,获取生成的验证证书(verificationCert.pem)。
选择对应证书,然后单击“上传验证证书”。
在弹出的对话框中,单击“添加文件”,然后单击“确认”。上传验证证书后,证书状态变为“已验证”,表明您拥有该CA证书。
制作用于设备连接的CA证书详细流程
以管理员身份运行cmd命令行窗口,执行cd c:\openssl\bin(请替换为openssl实际安装路径),进入openssl命令视图。
执行如下命令生成密钥对。
openssl genrsa -out deviceCert.key 2048
执行如下命令为设备证书创建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) []:组织,如Das。
Organizational Unit Name (for example, section) []:组织单位,如IoT。
Common Name (e.g. server FQDN or YOUR name) []: 名称,如zhangsan。
Email Address []:邮箱地址,如1234567@163.com。
Password[]:密码,如1234321。
Optional Company Name[]:公司名称,如Das。
执行以下命令使用CSR创建设备证书。
openssl x509 -req -in deviceCert.csr -CA lightRootCA.pem -CAkey lightRootCA.key -CAcreateserial -out deviceCert.pem -days 500 -sha256
在openssl安装目录的bin文件夹下,获取生成的设备证书(deviceCert.pem)。
使用证书连接服务器
使用基于X.509证书的设备认证时,除服务端根证书,deviceCert.pem,deviceCert.key外还血需携带如下参数连接MQTT服务器: mqttClientId,mqttUsername,mqttPassword
变量名 | 说明 |
---|---|
mqttClientId | 格式为deviceId&productId,例如:device1&product1 |
mqttUsername | 任意非空字符串 |
mqttPassword | 任意非空字符串 |