使用 EMQX Cloud 实现物联网设备一机一密验证

简介: 本文将采用 Redis 作为认证数据源存储数据库,讲解如何通过物联网设备端证书中包含的 Common Name 为验证信息,连接到 EMQX Cloud,实现客户端一机一密验证。

数据安全是物联网应用的重中之重。各厂商常使用对称加密、非对称加密、数字签名、数字证书等方法来对设备进行认证,以防止非法设备的接入。在证书的使用方式上,有一型一密、一机一密等不同的方案,其中一机一密方案预先为每一个设备端设置唯一的设备证书,设备端与服务端通信时能够进行双向验证,验证通过后,设备端与服务端才进行正常的数据传输。相比于其他方案,一机一密能够做到针对每个设备的单独验证与授权,具有更高的安全性。

作为安全可靠的全托管 MQTT 消息云服务, EMQX Cloud 支持多种认证方式,包括基础认证(用户名/密码,客户端 ID/密码)及 JWT、PSK 和 X.509 证书认证,同时可配置外部数据库作为数据源验证认证信息。

本文将采用 Redis 作为认证数据源存储数据库,讲解如何通过设备端证书中包含的 Common Name 为验证信息,连接到 EMQX Cloud,实现客户端一机一密验证。若客户端证书中不带有指定唯一的 Common Name,则无法通过认证。

通过本文,读者可以为其物联网设备实现一机一密、设备与服务器双向身份认证和建立安全通道的能力,有效防止伪造设备攻击、设备密钥被破解、伪造服务器指令、监听或篡改关键信息、通过设备产线安全漏洞窃取密钥等攻击手段。

操作流程

一、配置 TLS/SSL 双向认证

1、准备工作

  1. 购买服务器证书,并将其域名解析到部署连接地址。

    购买服务器证书.png

  2. 生成客户端 root ca 自签名证书,使用自签名 root ca 证书签发客户端证书需确保 Common Name 唯一。

    # CA 证书生成 client-ca.crt,subj 依据实际使用情况调整。
    openssl req \
        -new \
        -newkey rsa:2048 \
        -days 365 \
        -nodes \
        -x509 \
        -subj "/C=Common Name/O=EMQ Technologies Co., Ltd/Common Name=EMQ CA" \
        -keyout client-ca.key \
        -out client-ca.crt
    
    # 客户端秘钥生成 client.key
    openssl genrsa -out client.key 2048
    
    # 生成客户端证书请求文件 client.csr,Common Name 为客户端携带认证信息
    openssl req -new -key client.key -out client.csr -subj "/Common Name=346a004d-1dab-4016-bb38-03cca7094415"
    
    # 用 CA 证书给客户端证书签名,生成 client.crt
    openssl x509 -req -days 365 -sha256 -in client.csr -CA client-ca.crt -CAkey client-ca.key -CAcreateserial -out client.crt
    
    # 查看客户端端证书信息
    openssl x509 -noout -text -in client.crt
    
    # 验证证书
    openssl verify -CAfile client-ca.crt client.crt

2、配置流程

登录 EMQX Cloud 控制台 。进入部署详情,点击 +TLS/SSL 配置按钮,配置证书内容,您可以上传文件或者直接填写证书内容 TLS/SSL 认证类型:

① 单向认证:仅客户端验证服务端证书。

② 双向认证:客户端和服务端相互验证证书。

在本示例文档中我们以双向认证为例,在部署控制台填入以下内容:

① 公钥证书:服务端证书

② 证书链:证书链,通常第三方机构签发证书时会提供

③ 私钥:私有秘钥

④ 客户端 CA 证书:选择双向认证时,需要提供客户端的 CA 证书

MQTT Cloud TLS SSL 双向认证.png

填写完成后,点击确定,直至状态为运行中,即 TLS/SSL 双向认证配置完成。

二、配置 Redis 认证/访问控制

本文以 Redis 认证/访问控制为例,当然您也可以使用其他外部认证数据源,在本文所述场景中,比较推荐使用 Redis 认证/访问控制。

1、创建 VPC 对等连接

在 EMQX Cloud 部署详情页面,创建 VPC 对等连接,便于专业版部署内网访问到您方 Redis 认证数据库。

EMQX Cloud 创建 VPC 对等连接.png

2、配置 Redis 认证/访问控制

  1. redis 配置

    在你的云服务器中,创建一个 Redis 服务。为了方便演示,这里使用 Docker 快速搭建。

    docker run -itd --name redis -p 6379:6379 redis:latest

    本示例配置数据有如下两种方式(二选一):

    HMSET  tls_domain:346a004d-1dab-4016-bb38-03cca7094415 password pubic
    HMSET  tls_subject:346a004d-1dab-4016-bb38-03cca7094415 password pubic

    redis 配置.png

  2. Redis 认证/访问控制配置

    进行身份认证时,EMQX Cloud 将使用当前客户端信息填充并执行用户配置的认证查询命令,查询出该客户端在 Redis 中的认证数据。

    可以在认证 SQL 中使用以下占位符,执行时 EMQX Cloud 将自动填充为客户端信息::

    • %u:用户名
    • %c:客户端 ID
    • %C:TLS 证书公用名(证书的域名或子域名),仅当 TLS 连接时有效
    • %d:TLS 证书 subject,仅当 TLS 连接时有效

    你可以根据业务需要调整认证查询命令,使用任意 Redis 支持的命令 (opens new window),但是任何情况下认证查询命令需要满足以下条件:

    ① 查询结果中第一个数据必须为 password,EMQX 使用该字段与客户端密码比对

    ② 如果启用了加盐配置,查询结果中第二个数据必须是 salt 字段,EMQX 使用该字段作为 salt(盐)值

    在部署中点击认证鉴权 - 外部认证授权 - Redis 认证/访问控制,点击配置认证,即可新建认证。

    认证查询命令有如下两种方式:

    HMGET tls_domain:%C password
    HMGET tls_subject:%d password

    即设备需携带客户端证书、客户端秘钥和其 Common Name 、password 的方式进行身份验证。

    Redis 认证.png

测试验证

我们使用 MQTT X 模拟客户端携带以下信息连接到 EMQX Cloud。

① 服务端 CA

② Common Name 为 346a004d-1dab-4016-bb38-03cca7094415 的客户端证书、客户端秘钥

③ password:public

MQTT X.png

点击 右上角 connect,出现 connected 表示已连接成功。至此,带有指定 common name 的设备已成功连接至 EMQX Cloud,即一机一密设备通过验证并连接至 EMQX Cloud 已成功。

MQTT X1.png

结语

至此我们完成了 EMQX Cloud 的客户端一机一证书验证流程,成功连接到部署。相比于其他方案,一机一密能够做到针对每个设备的单独验证与授权,具有更高的安全性,若您也为您的每一个物联网设备设置了唯一的访问凭证,可以参考本文进行配置。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
1天前
|
监控 安全 物联网
确保互联世界中物联网设备安全的三个技巧
确保互联世界中物联网设备安全的三个技巧
|
25天前
|
物联网 5G 智能硬件
物联网卡:物联网卡不支持语音通话,是如何实现设备间的数据传输和通信的?
物联网卡(IoT SIM卡)通常被设计用于支持物联网(IoT)设备之间的数据传输,而不直接支持语音通话功能。这是因为物联网设备主要关注的是数据的收集、传输和处理,而不是语音通信。为了实现设备间的数据传输和通信,物联网卡及其背后的技术采用了多种方法,主要包括但不限于以下几种方式:
物联网卡:物联网卡不支持语音通话,是如何实现设备间的数据传输和通信的?
|
27天前
|
传感器 机器学习/深度学习 存储
物联网设备精细化管理系统解决方案
随着科技的进步,物联网技术作为新一代信息技术的核心部分,正在深刻改变各行业的生产和管理方式。其在资产管理、智慧城市、能源管理和智慧医疗等多个领域的广泛应用,不仅提高了运营效率,还促进了资源优化配置和精细化管理。本文详细介绍了物联网的基础概念及其在设备精细化管理系统中的具体应用方案,展示了如何通过智能感知层建设、数据处理分析平台以及精细化管理应用,实现设备的实时监控、预测性维护和能耗管理等功能,从而帮助企业提升竞争力,降低成本,并推动社会向更智能化、绿色化的方向发展。
70 2
物联网设备精细化管理系统解决方案
|
10天前
|
物联网
物联网卡不能使用在什么设备上
“物联网卡不能使用在什么设备上”这一操作或规定,通常基于物联网卡的特性、使用条款以及设备兼容性等因素。以下是对这一问题的详细分析和操作建议:
|
13天前
|
存储 监控 物联网
医疗物联网设备精细化管理系统解决方案
华汇数据智慧医院物联网管理系统解决方案是一种集物联网、云计算、大数据和人工智能等先进技术于一体的综合性解决方案,旨在提升医院的运营效率、医疗质量和患者满意度。
44 3
|
18天前
|
安全 物联网
物联网卡不能更换设备使用吗
物联网卡(IoT SIM卡)是否允许更换设备使用,这主要取决于物联网服务提供商的具体政策和服务条款。通常,物联网卡是为特定设备或应用场景设计的,因此一些服务提供商会限制卡的更换使用,主要是出于安全、管理、网络优化和避免滥用等考虑
|
26天前
|
物联网 数据安全/隐私保护
物联网:物联网卡不能使用在什么设备上
物联网卡是专为物联网设备设计的SIM卡,旨在连接非传统的、嵌入式或远程的设备到互联网。由于其特定的用途和设计,物联网卡并不适用于所有类型的设备,尤其是在以下几个方面,物联网卡通常不能或不建议使用在以下设备上:
|
2月前
|
安全 物联网 定位技术
2G网络和基站的撤销对物联网设备的影响
2G网络和基站的撤销对物联网设备的影响是多方面的,以下是对这一影响的详细分析:
2G网络和基站的撤销对物联网设备的影响
|
26天前
|
物联网 智能硬件
物联网卡:当物联网设备用卡使用在非物联网设备上会被管控吗
当设备物联网卡被检测到在非物联网设备上使用时,可能会遇到一系列的反应或后果,这主要取决于运营商的政策和物联网卡的设计目的。物联网卡通常是为非物联网设备(如智能家居设备、智能城市基础设施、车联网设备等)设计的,其流量套餐、网络连接速度、服务协议以及费用结构都与普通SIM卡有所不同。以下是一些可能发生的情况:
|
28天前
|
消息中间件 存储 NoSQL
物联网设备频繁断网,如何打赢智慧社区的流量洪峰之战?
本文详细介绍了智慧社区中物联网(IOT)技术的应用,重点讨论了物联网流量洪峰的处理方法。文章分析了上行和下行消息的特点,并提出了上下行拆分、多泳道消息队列、实时消息优先处理、连接计算存储分离及推拉结合的消息策略,以优化消息队列,确保系统稳定运行。通过这些技术手段,智慧社区的物联网设备能在各种场景中保持高效运作。
33 2

相关产品

  • 物联网平台