海豚MQTT-Mosquitto(1)
发布网友
发布时间:2024-10-04 10:16
我来回答
共1个回答
热心网友
时间:2024-10-04 10:32
在决定使用MQTT协议后,搭建MQTT服务器的首要任务是选择MQTT Broker。虽然云平台提供了付费服务,但个人项目成本较高,因此个人用户可能会选择自建服务器,如之前双十一购买的低配服务器,非常适合实验用途。
在选择后台方案时,市场上MQTT Broker选项众多。早期,我曾参考过一些资料,那时Mosquitto因其轻量级和C语言实现的优点,是我的首选。然而,鉴于其更新不频繁且扩展功能有限,上一次搭建过程中遇到不少困难,这次我决定寻找更为现代化的解决方案,尽管它曾是我的起点。
安装和运行Mosquitto在Centos服务器上相对简单,只需要几个命令即可。为了保证安全性,我关闭了默认的匿名访问,通过创建adam用户并存储在/etc/mosquitto/clipasswd文件中,并设置了用户密码登录。接着,我修改了mosquitto.conf文件,强制客户端使用用户名和密码进行认证,并重启了服务。
接下来,我开始转向SSL加密,需要生成自签名的证书。通过一系列命令,我生成了cacert.pem, server.crt, 和server.key文件。然后,我修改了mosquitto.conf,将非加密端口绑定到本地,添加了SSL相关配置,并重启了服务。测试连接时,确保使用正确的域名和证书文件。
然而,仅此还不够,我需要对访问权限进行控制。这超出了Mosquitto的基本功能,需要借助第三方插件mosquitto-auth-plug来实现。但该插件已停止维护,且与我使用的mosquitto-1.6.10版本存在兼容性问题。我下载了对应版本的源码和openssl,进行了编译,并对auth-plug.c文件进行了必要的修改。接着,我将mosquitto的动态库调整到正确位置,并在Makefile中添加了链接参数。
在配置mosquitto时,我删除了之前用到的密码文件,转而依赖数据库管理。我创建了数据库表,定义了新的权限规则,并利用mosquitto的np工具生成用户密码,将其写入数据库。至此,通过MySQL控制用户登录和权限的Mosquitto配置已完成。
最后,为了测试MQTT服务器的性能,我附带了一个压测工具。通过以上步骤,一个安全且可扩展的MQTT服务器已经搭建完毕,满足了对用户访问权限的控制需求。