记录: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 认证插件,我们需要打开此插件。
配置插件自启
达到开启目的(它将在 EMQ X 启动时自动加载,优先推荐)- 也可以通过
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 安全连接相关推荐
- 在MQTT中使用SSL/TLS提高安全性
翻译自:http://rockingdlabs.dunmire.org/exercises-experiments/ssl-client-certs-to-secure-mqtt 在MQTT中使用SS ...
- linux 安装微信ca证书,微信SSL证书更换的检查与安装方法
微信SSL证书更换的检查与安装方法 Ubuntu, Debian 查看根证书 确认操作系统上,是否存在以下文件: /etc/ssl/certs/DigiCert_Global_Root_CA.pem ...
- mysql ssl jdbc_Mysql启用SSL以及JDBC连接Mysql配置
文章目录 一.Mysql启用SSL配置 1.检查mysql是否支持ssl 2.设置用户是否使用ssl连接 1.查看用户是否使用SSL连接 2.强制某用户使用SSL连接 3.测试不使用ssl能否连接上 ...
- [记录] --- linux安装redis
获取redis资源 wget http://download.redis.io/releases/redis-具体版本.tar.gz 解压 tar xzvf redis-具体版本.tar.gz 安装 ...
- Linux安装MySQL8.0.29,并使用Navicat连接
目录 资源下载 官网下载 资源筛选 使用Xftp传输到CentOS中 安装操作 检查/tmp临时目录权限(必不可少) 安装前,检查依赖 开始正式安装 查看MySQL版本 安装后的配置工作 服务的初始化 ...
- Linux安装docker-compose时使用github.com拒接连接处理
报错如:Failed to connect to raw.githubusercontent.com port 443: Connection refused 主要问题就是拒接服务到github.co ...
- CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户
一.前言 继写下<PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件>一文已有一年之久,随着时间的流逝,此文中的一些解决方案逐渐暴露出了一个限制性问题,也就是通过smtp连接Q ...
- Linux安装Redis监控工具RedisInsight
文章目录 1.简介 2.安装RedisInsight 2.1下载RedisInsight 2.2配置RedisInsight 2.3运行RedisInsight 3.使用RedisInsight 3. ...
- nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法
nltk是NLP领域中一个比较通用的国际分词工具,但是使用时往往依赖语料库数据包,需要安装到本地,以下介绍在线安装和离线安装两种方式: (ps:对NLP感兴趣的朋友可以相互学习,我的微信号:Joney ...
最新文章
- 记MAVEN技巧 用maven坐标从公司nexus私有库上获取所在存储位置
- 算法太多挑花眼?教你如何选择正确的机器学习算法
- 1-springboot基础
- DeepLearning | Tensorflow编程基础:Session、Constant、Variable、Tensor、Placeholder、OP
- c语言遗传算法实例ppt,遗传算法的C语言程序案例.doc
- 3月21日阿里云北京峰会的注册二维码
- C# 在服务器生成文件/文件夹并压缩下载到本地
- MPPT “最大功率点跟踪”
- 吴恩达—机器学习的六个核心算法
- Win10 VS2019+QT/OpenCV/灰点相机/函数信号发生器 配置及其使用
- 2012年8月11日
- Express的使用
- element ui el-table单元格按需合并
- 网易之小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性.需要根据给定的w,x,y,z,求出集合中一共有多少个元素。
- 屏下指纹技术实现方案与原理
- Schnorr签名算法(初始化和签名)C语言实现
- vue2与vue3的区别
- DeepMind再爆性骚扰丑闻!内部邮件泄露,色狼自夸猛男
- 逻辑函数常用的描述方法及相互间的转化
- 用MVP+OKHttp实现上传图片