本文的重點是從匿名訪問mqtt broker(只需要Ip和port),到需要登錄(用戶名和密碼)和鑑權(發佈和訂閱那些topics)的過度的 過程。
安裝 Mosquitto MQTT Broker 1
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
配置Mosquitto MQTT Broker
1. 打開 mosquitto.conf
sudo vim /etc/mosquitto/mosquitto.conf
2. 添加
# 禁止匿名訪問
allow_anonymous false
# 認證配置
password_file /etc/mosquitto/pwfile
# 權限配置
acl_file /etc/mosquitto/aclfile
3. 添加pwfile
touch /etc/mosquitto/pwfile
mosquitto_passwd /etc/mosquitto/pwfile 用戶名
根據提示輸入兩遍密碼
4. 添加aclfile (必須添加,否者無法啓動Mosquitto,而且這個是白名單,只有列出的topics 才能被訪問 )
touch /etc/mosquitto/aclfile
vim /etc/mosquitto/aclfile
user A
topic write test/#
topic read $SYS/#
如何使用通配符,請參考MQTT Topics & Best Practices2
5. 啓動Mosquitto broker
sudo service mosquitto start
可選參數 {start|stop|reload|force-reload|restart|try-restart|status}
6. 測試 Mosquitto broker
訂閱
mosquitto_sub -h localhost -p 1883 -t "test/#" -u username -P 123456 -i "clientID"
發送
mosquitto_pub -h localhost -p port -t "test/abc" -u user name -P 123456 -i "client3" -m "How are you?"
請參考
1. https://www.jianshu.com/p/9e3cb7042a2e
2. https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices/