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

前提

项目中需要新增消息推送功能,原本计划使用 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 测试连接

按下图配置,连接成功,并且订阅收发消息正常!!自此全部完成!!

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

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

  1. 在MQTT中使用SSL/TLS提高安全性

    翻译自:http://rockingdlabs.dunmire.org/exercises-experiments/ssl-client-certs-to-secure-mqtt 在MQTT中使用SS ...

  2. linux 安装微信ca证书,微信SSL证书更换的检查与安装方法

    微信SSL证书更换的检查与安装方法 Ubuntu, Debian 查看根证书 确认操作系统上,是否存在以下文件: /etc/ssl/certs/DigiCert_Global_Root_CA.pem ...

  3. mysql ssl jdbc_Mysql启用SSL以及JDBC连接Mysql配置

    文章目录 一.Mysql启用SSL配置 1.检查mysql是否支持ssl 2.设置用户是否使用ssl连接 1.查看用户是否使用SSL连接 2.强制某用户使用SSL连接 3.测试不使用ssl能否连接上 ...

  4. [记录] --- linux安装redis

    获取redis资源 wget http://download.redis.io/releases/redis-具体版本.tar.gz 解压 tar xzvf redis-具体版本.tar.gz 安装 ...

  5. Linux安装MySQL8.0.29,并使用Navicat连接

    目录 资源下载 官网下载 资源筛选 使用Xftp传输到CentOS中 安装操作 检查/tmp临时目录权限(必不可少) 安装前,检查依赖 开始正式安装 查看MySQL版本 安装后的配置工作 服务的初始化 ...

  6. Linux安装docker-compose时使用github.com拒接连接处理

    报错如:Failed to connect to raw.githubusercontent.com port 443: Connection refused 主要问题就是拒接服务到github.co ...

  7. CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户

    一.前言 继写下<PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件>一文已有一年之久,随着时间的流逝,此文中的一些解决方案逐渐暴露出了一个限制性问题,也就是通过smtp连接Q ...

  8. Linux安装Redis监控工具RedisInsight

    文章目录 1.简介 2.安装RedisInsight 2.1下载RedisInsight 2.2配置RedisInsight 2.3运行RedisInsight 3.使用RedisInsight 3. ...

  9. nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法

    nltk是NLP领域中一个比较通用的国际分词工具,但是使用时往往依赖语料库数据包,需要安装到本地,以下介绍在线安装和离线安装两种方式: (ps:对NLP感兴趣的朋友可以相互学习,我的微信号:Joney ...

最新文章

  1. 记MAVEN技巧 用maven坐标从公司nexus私有库上获取所在存储位置
  2. 算法太多挑花眼?教你如何选择正确的机器学习算法
  3. 1-springboot基础
  4. DeepLearning | Tensorflow编程基础:Session、Constant、Variable、Tensor、Placeholder、OP
  5. c语言遗传算法实例ppt,遗传算法的C语言程序案例.doc
  6. 3月21日阿里云北京峰会的注册二维码
  7. C# 在服务器生成文件/文件夹并压缩下载到本地
  8. MPPT “最大功率点跟踪”
  9. 吴恩达—机器学习的六个核心算法
  10. Win10 VS2019+QT/OpenCV/灰点相机/函数信号发生器 配置及其使用
  11. 2012年8月11日
  12. Express的使用
  13. element ui el-table单元格按需合并
  14. 网易之小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.需要根据给定的w,x,y,z,求出集合中一共有多少个元素。
  15. 屏下指纹技术实现方案与原理
  16. Schnorr签名算法(初始化和签名)C语言实现
  17. vue2与vue3的区别
  18. DeepMind再爆性骚扰丑闻!内部邮件泄露,色狼自夸猛男
  19. 逻辑函数常用的描述方法及相互间的转化
  20. 用MVP+OKHttp实现上传图片

热门文章

  1. Qt --- QTreeWidget 树形控件实例遇到的问题
  2. npm 与 package.json 快速入门教程
  3. 微信小程序开发 - 不完善
  4. 基于消失点的相机自动标定
  5. D3.js 制作中国地图 .net 公共基础类
  6. 计算机一级excel操作题百分比,计算机一级excel操作练习题
  7. Problem C: 判断三角形的性质
  8. optfine的jar文件打不开_mclauncherBN
  9. SLAM数据集(百度网盘)
  10. CSS3 - 使用弹性盒子(Flex Box)实现完美居中、栅格系统及响应式布局