一、Emqx4.3版本emqx_auth_username验证被废弃的替代处理
物联网协议MQTT消息服务器Emqx4.3版本emqx_auth_username验证被废弃的替代处理。
Emqx安装成功后的,后台地址为http://127.0.0.1:18083,默认登录账号为admin,密码为public。emqx的配置目录路径存在/etc/emqx/中。使用service emqx start/stop/restart进行服务操作。线上使用emqx时需要进行一下处理,首先就是防匿名用户登录操作。关于这项是否成功可以在管理后台的websocket中直接点击connet判断是否禁止匿名用户登录,如果正常开启则必须输入username和password才能连接。
首先是要修改配置文件/etc/emqx/emqx.conf调整allow_anonymous为false,即开启防匿名用户登录。
#禁止匿名登录,allow_anonymous默认是true
vim /etc/emqx/emqx.conf
## Value: true | false
allow_anonymous = false
之后就有些不一样了,在Emqx4.3版本之前存在一个emqx_auth_username扩展,可以通过启动emqx_auth_username插件模块修改其配置实现账号密码验证。进行如下操作即可使用。
#导入插件模块
cd /usr/lib/emqx/bin
sh emqx_ctl plugins load emqx_auth_username
#命令添加账号密码或者编辑配置文件
emqx_ctl users add admin public
#编辑用户名密码配置文件
vim /etc/emqx/plugins/emqx_auth_username.conf
## username 认证数据
auth.user.2.username = admin
auth.user.2.password = public
## Password hash
auth.user.password_hash = sha256
但在Emqx4.3版本之后不一样了,官方文档:版本发布 | EMQX 4.3 文档 里有注明4.3版本中emqx_auth_clientid 与 emqx_auth_usernmae 合并为 emqx_auth_mnesia。emqx_auth_username模块从此废弃。在Emqx4.3版中加载emq_auth_username插件会报不存在的错误,所以不要再去寻找安装emqx_auth_username模块了。直接修改emqx_auth_mnesia.conf模块配置文件,添加账号密码。
#在Emqx4.3版中加载插件会报不存在
# ./emqx_ctl plugins load emq_auth_username
Load plugin emq_auth_username error: not_found.
# etc/plugins/emqx_auth_mnesia.conf
## clientid 认证数据
auth.client.1.clientid = admin
auth.client.1.password = public
## username 认证数据
auth.user.2.username = admin
auth.user.2.password = public
## Value: plain | md5 | sha | sha256
auth.mnesia.password_hash = sha256
另外Mnesia认证默认即是使用 sha256 进行密码哈希加密,可在 etc/plugins/emqx_auth_mnesia.conf 中更改,其方式也和原来的emqx_auth_username模块不一样。而是使用auth.mnesia.password_hash配置项来设置。最后重启emqx restart并在管理后台启动emqx_auth_mnesia插件即可。
二、物联网协议MQTT消息服务器 EMQX 的可视化连接工具 mqttfx 下载
EMQX是一款大规模分布式物联网 MQTT 消息服务器,使用非常广泛,在开发中如果仅依靠程序调试来显示消息内容非常麻烦,这时一个方便的可视化工具能给开发带来很大的便利。mqttfx 就是这么一个工具。它是物联网协议 MQTT 的应用 EMQX 的连接工具。 mqttfx 下载地址:
http://www.jensd.de/apps/mqttfx/1.7.1/
EMQX默认是允许匿名访问,打开MQTT.fx 可以直接连接 EMQX,输入连接Broker Address和Broker Port等信息即可连接上。当然,实际业务中最好把这个匿名访问关闭,在我的博客中有相关的文章记录。
最后关于 EMQX 的端口,EMQX 涉及的端口有多个,但实际运行中并不需要把所有的端口都开放,视你的服务部署情况决定,各个服务端口说明如下:
1883:MQTT 协议端口
8883:MQTT/SSL 端口
8083:MQTT/WebSocket 端口
8080:HTTP API 端口
8084 WSS端口
18083:Dashboard 管理控制台端口
如果业务不使用 https的话,只需要开 8083、18083、1883三个端口即可。
如果要使用 https 那就打开 8883、8084、18083端口。
如果需要使用 http 接口调用 EMQX,需要开放 8080 端口。
最后 EMQX 的可视化连接工具 mqttfx 下载地址见本文章的绑定资源。