我有一个在 Windows 计算机上运行的 mosquitto MQTT 代理。我正在尝试控制某个用户可以订阅发布的主题。
我创建了一个测试用户(“test”)并将该用户添加到密码文件中。
客户端可以连接到代理并通过用户名、密码和 SSL 进行身份验证。 它还可以接收已发布的消息。
但是每当我将 ACL 文件添加到每个侦听器配置中时,客户端都无法接收任何已发布的消息。
这是我的全局配置
per_listener_settings true
这是我的每个侦听器配置。
listener 9996
cafile C:\Certificates\ca.crt
certfile C:\Certificates\server.crt
keyfile C:\Certificates\server.key
require_certificate true
use_identity_as_username true
acl_file C:\mosquittoaccesscontrol.acl
password_file c:\mosquittopasswords.txt
这是我的 ACL 文件配置
user test
topic #
好的。我发现了问题。当您设置时:
use_identity_as_username true
它使用客户端证书中的通用名称 (CN) 作为 MQTT 用户名,因此,用户名与 ACL 文件中指定的用户名不同。
我已经设置了
use_identity_as_username false
,现在它可以工作了。