记录:Linux 安装 EMQX MQTT 并启用 SSL/TLS 安全连接

文章仅为记录,如有错误请联系本人进行修改,以免误导他人~

前提

项目中需要新增消息推送功能,原本计划使用 websocket ,但因为某些原因决定使用 MQTT
网上资料众多,亦可自行查阅。
第一次接触消息推送类业务,本人通过网上冲浪摸索了一些基础用法,在这里简单的记录自己的 能跑就行
使用
EMQX (MQTT 消息服务器) ,B站EMQX视频教学
后端 Java: eclipse.paho
前端 Angular: ngx-mqtt

一、EMQ X 前期准备工作

下载 EMQ X

官方文档写的挺详细了,基本按照自己的Linux系统照抄即可。
我这里选用的是 zpi 压缩包方式 安装emqx-centos7-v4.1.5.zip
文档描述
下载到本地后,将它放到你要安装的服务器路径中,我的是/usr/local/emqx
在这里插入图片描述

解压 EMQ X

执行解压命令unzip emqx-centos7-v4.1.5.zip ,执行完成后出现 emqx 文件夹代表完成安装!
p.s. 如果没unzip 命令,可以执行 yum install -y unzip zip
在这里插入图片描述

启动 EMQ X

基础命令
启动命令emqx start
关闭命令emqx stop
重启命令emqx restart
查看状态emqx_ctl stauts

进入刚解压完的文件夹中,进入bin 文件,执行启动命令,
出现 EMQ X Broker v4.1.5 is started successfully! 则代表启动完成!
在这里插入图片描述

进入 EMQ X Dashboard

EMQ X Dashboard 是一个 Web 应用程序,你可以直接通过浏览器来访问它,无需安装任何其他软件。
当 EMQ X 成功运行且 EMQ X Dashboard 被默认启用时,你可以访问 http://{ip地址}:18083 来查看你的 Dashboard,默认用户名是 admin,密码是 public。可通过下面命令修改账密
进入面板后可以通过设置改为中文语言。
在这里插入图片描述

修改 EMQ X Dashboard 密码

可使用以下命令行修改账号 emqx_ctl
创建 admin 账号: admins add <Username> <Password> <Tags>
重置 admin 密码: admins passwd <Username> <Password>
删除 admin 账号: admins del <Username>
在这里插入图片描述

二、EMQ X 基础连接以及测试

可通过面板自带的 工具 > Websocket 进行连接,以及订阅和发布测试
在这里插入图片描述
也可以通过安装 官方工具 MQTT X 进行更丰富、方便的测试

三、EMQ X 添加认证

大家可以根据实际项目情况选择适合自己的认证方式:
在这里插入图片描述

需注意!!
匿名认证 EMQ X 默认配置中启用了匿名认证,任何客户端都能接入 EMQ X。没有启用认证插件或认证插件没有显式允许/拒绝(ignore)连接请求时,EMQ X 将根据匿名认证启用情况决定是否允许客户端连接。
修改的任何配置都需要重启EMQX 达到生效目的

配置匿名认证开关:

修改 emqx/etc/emqx.conf

## Allow anonymous authentication by default if no auth plugins loaded.
## Notice: Disable the option in production deployment!
##
## Value: true | false
allow_anonymous = true

修改为false, 重启EMQ X

添加管理认证

这里我选择简单的Username 里的 HTTP API管理认证 :
Dashboard 默认关闭 Username 认证插件,我们需要打开此插件。

  1. 配置插件自启达到开启目的(它将在 EMQ X 启动时自动加载,优先推荐)
  2. 也可以通过Dashboard -> 插件 手动选择 启动/停止

配置插件自启,修改 data/loaded_plugins ,添加:

{emqx_auth_username, true}.

在这里插入图片描述
重启EMQ X 后,查看Dashboard 发现插件已经打开。
在这里插入图片描述
EMQ X提供了对应的HTTP API 用以维护内置数据源中的认证信息,我们可以添加/查看/取消/更改认证数据
我们使用postman 添加username以及password, 后续mqtt 的连接都需要此账号
username 认证相关的一些API,也可以在Dashboard -> 工具 -> HTTP 接口 中查看:
新增指定: POST http://localhost:18083/api/v4/auth_username
查找所有: GET http://localhost:18083/api/v4/auth_username
删除指定:DELETE http://localhost:18083/api/v4/auth_username/{username}
在这里插入图片描述
添加的时候注意需要携带Auth
在这里插入图片描述
添加完成后,再此使用mqtt x 测试连接会提示报错,链接时不设置刚添加的账号密码,
连接提示报错:Error: Connection refused: Not authorized,再设置账号密码进行连接,连接成功!
在这里插入图片描述

四、项目内使用

以后有空会把前后端的代码贴出来记录在另外两个帖子中 =。=

后端 Java采用eclipse.paho 开发;
前端 Angular采用ngx-mqtt 开发;

五、启用SSL\TSL 安全连接

SSL\TSL 安全连接简介

在这里插入图片描述
官方文档 说的也是很详细,大家对着抄就行,只有在购买证书的配置中,我需要再修改一行配置才能生效,不知道是文档中遗漏还是我的操作问题,会把这几个注意事项写在下面:

启用操作

在这里插入图片描述

注意事项一:

公司够买的证书文件为.pem 后缀, 一开始看文档以为emqx 需要的是.crt ,其实都可以;

复制一份证书:

cp 至emqx 文件里的/etc/certs 指定位置中
cp *****.key /emqx/etc/certs/emqx.key
cp *****.pem /emqx/etc/certs/emqx.pem

修改配置

结合我项目的实际使用有注意事项:
在这里插入图片描述

注意事项二

如上图文档,修改的配置为 listener.ssl. 开头配置项,这种修改只适合mqtts 方式 的链接。
前端项目使用wss 方式连接,所以需要修改 listener.wss.的配置:

注意事项三

官方文档只修改了 listener.ssl.external.keyfile = etc/certs/emqx.key && listener.ssl.external.certfile = etc/certs/emqx.crt 两处,但实际操作时发现仍需要多修改一处:

## Path to the file containing the user's private PEM-encoded key.
##
## See: listener.ssl.$name.keyfile
##
## Value: File
## listener.wss.external.keyfile = etc/certs/key.pem
listener.wss.external.keyfile = etc/certs/emqx.key

## Path to a file containing the user certificate.
##
## See: listener.ssl.$name.certfile
##
## Value: File
## listener.wss.external.certfile = etc/certs/cert.pem
listener.wss.external.certfile = etc/certs/emqx.pem

## Path to the file containing PEM-encoded CA certificates.
##
## See: listener.ssl.$name.cacert
##
## Value: File
## listener.wss.external.cacertfile = etc/certs/cacert.pem
listener.wss.external.cacertfile = etc/certs/emqx.pem
注意事项五

在这里插入图片描述

wss连接方式默认最大连接数是很少的,可以根据实际项目情况自行修改:

## Maximum number of concurrent MQTT/Webwocket/SSL connections.
##
## Value: Number
## listener.wss.external.max_connections = 16
listener.wss.external.max_connections = 512

重启emqx 以生效配置!!!!!!
重启emqx 以生效配置!!!!!!
重启emqx 以生效配置!!!!!!

MQTT X 测试连接

按下图配置,连接成功,并且订阅收发消息正常!!自此全部完成!!
在这里插入图片描述

小菜鸟的日常记录,如有缺陷和错误的地方请联系作者,感谢你的贡献!!


版权声明:本文为liaojinyuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。