系列文章目录
yocto下mosquitto用户名和密码配置
`
文章目录
前言
最近工作感觉经常在多线程切换,今天刚好要测试下盒子上移植mosquitto环境,就发现之前x86下mosquitto用户名和密码方式有点忘记了,现在记录下,供后面回顾。
一般mosquitto服务器搭建成功后,可以配置下用户名和密码,增加服务安全性,更安全的做法是使用 TLS/SSL 加密,后面有时间研究下再更新一下,本章主要记录下yocto mosquitto下怎么配置用户名和密码。
我的是一个嵌入式盒子,操作系统环境如下:
root@imx6ull14x14evk:/home/platform/depend/mosquitto/etc/mosquitto# cat /etc/os-release
ID="fsl-imx-xwayland"
NAME="NXP i.MX Release Distro"
VERSION="4.14-sumo (sumo)"
VERSION_ID="4.14-sumo"
PRETTY_NAME="NXP i.MX Release Distro 4.14-sumo (sumo)"
一、创建密码文件pwfile
Mosquitto 使用密码文件来存储用户名和密码。我们可以使用 mosquitto_passwd 工具来创建和管理这个文件。
mosquitto_passwd -c pwfile username
-c 选项表示创建一个新的文件。如果文件已经存在,-c 选项会覆盖它。
username 是你要设置的用户名。运行命令后,系统会提示你输入密码并确认。
cd /home/platform/depend/mosquitto/etc/mosquitto
root@imx6ull14x14evk:/home/platform/depend/mosquitto/etc/mosquitto# mosquitto_passwd -c pwfile iot
Password:
Reenter password:
二、配置mosquitto使用密码文件
接下来,我们需要修改 Mosquitto 的配置文件来启用密码验证。配置文件通常位于 /etc/mosquitto/mosquitto.conf,我目前mosquitto移植路径是自己定义的,在/home/platform/depend/mosquitto/etc/mosquitto/mosquitto.conf
1.修改配置文件
使用文本编辑器打开配置文件:
vi mosquitto.conf
在文件中添加以下内容来启用身份验证:
# 开启密码验证
allow_anonymous false
password_file /etc/mosquitto/pwfile
具体如下:
# Defaults to false, unless there are no listeners defined in the configuration
# file, in which case it is set to true, but connections are only allowed from
# the local machine.
allow_anonymous false
# -----------------------------------------------------------------
# Default authentication and topic access control
# -----------------------------------------------------------------
# Control access to the broker using a password file. This file can be
# generated using the mosquitto_passwd utility. If TLS support is not compiled
# into mosquitto (it is recommended that TLS support should be included) then
# plain text passwords are used, in which case the file should be a text file
# with lines in the format:
# username:password
# The password (and colon) may be omitted if desired, although this
# offers very little in the way of security.
#
# See the TLS client require_certificate and use_identity_as_username options
# for alternative authentication options. If a plugin is used as well as
# password_file, the plugin check will be made first.
#password_file
password_file /home/platform/depend/mosquitto/etc/mosquitto/pwfile
2.保存配置文件并退出
保存文件退出编辑器。
3.重启 Mosquitto 服务
配置更改后,需要重启 Mosquitto 服务以使其生效:
sudo systemctl restart mosquitto
root@imx6ull14x14evk:~# ps -ef | grep mosquitto
root 4696 1 0 Sep11 ? 00:01:51 /home/platform/depend/mosquitto/sbin/mosquitto -c /home/platform/depend/mosquitto/etc/mosquitto/mosquitto.conf
root 16940 16187 0 11:10 pts/0 00:00:00 grep mosquitto
4.测试配置
使用 MQTT 客户端( mosquitto_pub 和 mosquitto_sub)来测试配置是否生效。
尝试使用用户名和密码连接:
订阅主题
mosquitto_sub -h localhost -t “test/topic” -u “username” -P “password”
root@imx6ull14x14evk:~# mosquitto_sub -h localhost -t test/topic -u iot -P mqtt
Hello, MQTT
发布消息
mosquitto_pub -h localhost -t “test/topic” -m “Hello, MQTT” -u “username” -P “password”
注意:这里“P"要大写,代表 password, 小写的p 代表端口 port。
root@imx6ull14x14evk:~# mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT" -u iot -P mqtt
root@imx6ull14x14evk:~#
如果配置正确,你应该能够成功连接和发送/接收消息。
总结
以上就是今天的内容,通过以上步骤,可以成功配置 Mosquitto 使用用户名和密码进行访问控制,这是提高 MQTT 代理安全性的一个重要措施,特别是在生产环境中。
你好,我是阿灿,慢慢理解世界,慢慢更新自己,每天进步一点点,成为更好的自己。