博客迁移
在mosquitto和Node-Red间使用基于的MQTTS双向认证通讯( 私有CA)
- 博客迁移
- 概念说明
- mosquitto(mqtt-broker) Eclipse Mosquitto是实现MQTT协议版本5.0、3.1.1和3.1的开源消息代理。MQTT协议提供了使用发布/订阅模型执行消息传递的轻量级方法。
- Node-Red(mqtt-client) Node-RED是构建物联网应用程序的一个强大工具,其重点是简化代码块的"连接"以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(也叫做"节点")连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个"流"。最初是IBM在2013年末开发的一个开源项目,以满足他们快速连接硬件和设备到Web服务和其他软件的需求--作为物联网的一种粘合剂--它很快发展成为一种通用的物联网编程工具。
- openssl OpenSSL是用于传输层安全性(TLS)协议的健壮的,商业级,功能齐全的开源工具包,协议实现基于完整功能的通用密码库,该库也可以独立使用。
- 私有CA CA(Certificate Authority)证书颁发机构主要负责证书的颁发、管理以及归档和吊销。证书内包含了拥有证书者的姓名、地址、电子邮件帐号、公钥、证书有效期、发放证书的CA、CA的数字签名等信息。证书主要有三大功能:加密、签名、身份验证。
- SSL单向/双向认证 SSL单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。
- 搭建环境
- 基本流程 ![基本流程](https://i-blog.csdnimg.cn/blog_migrate/b7e0c78d4cea749c908f5bd2be4fe9ed.png)
- 详细操作
- mosquitto配置 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fa3e7ff0131e78541021b6c528e35855.png)
- Node-Red配置
- 效果及测试
- 总结 本文描述了如何在mosquitto和Node-Red间,使用基于的MQTTS双向认证通讯( 私有CA),内容较多,需要使用者对MQTT、SSL、双向认证等有基本的认识。许多关联内容以链接形式在本文中引用,希望能对后来人有一定借鉴作用。
概念说明
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 ```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.confbash 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配置
- 上传ca.crt,client.key,client.crt
- 更新节点即可连接
注:私有CA不要勾选“验证服务器证书”效果及测试
- mqttfx.exe (订购主题)
- 连接
- 订购主题
- Node-Red (发布主题)
- 连接
- 发布数据
- 数据通讯成功
总结 本文描述了如何在mosquitto和Node-Red间,使用基于的MQTTS双向认证通讯( 私有CA),内容较多,需要使用者对MQTT、SSL、双向认证等有基本的认识。许多关联内容以链接形式在本文中引用,希望能对后来人有一定借鉴作用。