• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

搭建用于生产环境的MQTT服务器

软件和平台 peyoot 2年前 (2022-09-06) 1308次浏览 0个评论

物联网项目中MQTT得到广泛的应用,许多云平台都原生支持MQTT协议。在公网上也有许多免费的MQTT broker服务器供开发使用。由于在没确定云服务是否可持续使用之前,有必要自建一套MQTT服务器,让它和各种平台的MQTT用法相兼容,这样就可以很方便桥接或是相到替代云产品和自建应用。

为了适应生产环境的需要,MQTT服务器可以开启密码校验或是通过证书来鉴权,这样可以防止自建的MQTT服务器被滥用或是攻击。一般我们可以用Mosquitto来作为MQTT服务器,不论是用docker容器的方式实现,还是直接安装,其关键还是在配置上。

1. 安装

sudo apt update
sudo apt install mosquitto mosquitto-clients

2. 配置密码连接
首先创建一个用户,用下面命令在创建新用户iotdevice时,可以输入用户名和密码,请记录下来

sudo mosquitto_passwd -c /etc/mosquitto/passwd iotdevice

然后在配置文件中实现

sudo nano /etc/mosquitto/conf.d/default.conf

输入配置:

listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd

这样,就实现了有基本鉴权的MQTT服务器

3. 开启服务:

sudo systemctl restart mosquitto.service

4. 开启TLS和利用证书连接
用户名和密码的连接方式保证了一定的安全性,但这还不够,更有效的是为设备和用户端分配证书,凭证书来连接和发布订阅。首先我们需要创建CA和证书,虽然可以用openssl命令行工具实现,但管理和命令操作都非常不方便,这里介绍一个证书管理工具EasyRSA,可以利用这个工具来快速搭建PKI并生成服务端和客户端的证书。

利用证书的连接配置如下:

listener 1883 localhost
#listener 9001
#protocol websockets
listener 8883
require_certificate true
cafile /etc/mosquitto/ca_certificates/ca.crt
keyfile /etc/mosquitto/certs/mqttserver.key
certfile /etc/mosquitto/certs/mqttserver.crt

有关如何创建CA,服务器和设备端的证书密钥等,可参考:如何自建企业PKI并生成证书


ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:搭建用于生产环境的MQTT服务器
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址