2021-07-12-在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯( 私有CA)

@[TOC](在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯( 私有CA) )

概念说明#

mosquitto(mqtt-broker)#

Eclipse Mosquitto是实现MQTT协议版本5.0、3.1.1和3.1的开源消息代理。MQTT协议提供了使用发布/订阅模型执行消息传递的轻量级方法。

相关信息见 https://mosquitto.org/

Node-Red(mqtt-client)#

Node-RED是构建物联网应用程序的一个强大工具,其重点是简化代码块的”连接”以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(也叫做”节点”)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个”流”。最初是IBM在2013年末开发的一个开源项目,以满足他们快速连接硬件和设备到Web服务和其他软件的需求–作为物联网的一种粘合剂–它很快发展成为一种通用的物联网编程工具。

相关信息见 https://nodered.org/

openssl#

OpenSSL是用于传输层安全性(TLS)协议的健壮的,商业级,功能齐全的开源工具包,协议实现基于完整功能的通用密码库,该库也可以独立使用。

相关信息见 https://github.com/openssl/openssl

私有CA#

CA(Certificate Authority)证书颁发机构主要负责证书的颁发、管理以及归档和吊销。证书内包含了拥有证书者的姓名、地址、电子邮件帐号、公钥、证书有效期、发放证书的CA、CA的数字签名等信息。证书主要有三大功能:加密、签名、身份验证。

私有CA:在确定配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件即可;

SSL单向/双向认证#

SSL单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。

双向认证则是需要服务端与客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些。

相关信息
https://www.jianshu.com/p/fb5fe0165ef2
http://www.steves-internet-guide.com/ssl-certificates-explained/

搭建环境#

服务端#

操作系统:CentOS Linux release 7.8.2003
mosquitto: version 1.6.8

客户端#

Node-Red : mqtt 节点

基本流程#

基本流程

详细操作#

软件安装#

mosquitto#

1
2
3
4
5
6
7
8
9
10
What you'll need:
Port 1883 to be open to incoming MQTT messages
Step 1: Add the CentOS mosquitto repository to YUM's list of repositories
$ yum install epel-release
$ sudo yum install mosquitto
Step 2: Run mosquitto
As of writing, no init.d script exists for the CentOS distribution of mosquitto. However, it is a simple enough matter to set it running as a daemon, you'll just need to restart it yourself whenever your machine gets restarted.
$ sudo su
$ mosquitto -d -c /etc/mosquitto/mosquitto.conf > /var/log/mosquitto.log 2>&1
Mosquitto should now be running! You can test it by pointing mosquitto_pub and _sub at it.

认证配置#

详细见

单向认证
双向认证

mosquitto配置#

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
服务端最终配置mosquitto.conf

1
2
3
4
5
6
7
port 8883
cafile /etc/mosquitto/ca_certificates/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate true
tls_version tlsv1.2
use_identity_as_username true

Node-Red配置#

  1. 上传ca.crt,client.key,client.crt
  2. 更新节点即可连接

注:私有CA不要勾选“验证服务器证书”
在这里插入图片描述

效果及测试#

  1. mqttfx.exe (订购主题)
    1. 连接
      
      在这里插入图片描述
    2. 订购主题
      在这里插入图片描述
  2. Node-Red (发布主题)
    1. 连接
      在这里插入图片描述
    2. 发布数据
      在这里插入图片描述
  3. 数据通讯成功

总结#

本文描述了如何在mosquitto和Node-Red间,使用基于的MQTTS双向认证通讯( 私有CA),内容较多,需要使用者对MQTT、SSL、双向认证等有基本的认识。许多关联内容以链接形式在本文中引用,希望能对后来人有一定借鉴作用。

2021-07-12-在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯( 私有CA)

https://blog.buqia.fun/2022/02/17/2021-07-12-在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯(-私有CA)/

作者

lxmuyu

发布于

2022-02-17

更新于

2022-02-17

许可协议