Windows系统下安装Mosquitto的步骤(7)

2024-05-05 14:36

本文主要是介绍Windows系统下安装Mosquitto的步骤(7),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接前一篇文章:Windows系统下安装Mosquitto的步骤(6)

本文内容参考:

Windows下搭建MQTT服务器_mqtt服务器软件-CSDN博客

Enable SSL/TLS Connection | EMQX Enterprise Docs

特此致谢!

上一回讲解了使用MQTTX图形界面实现与远程服务器通信的功能。现在还剩一个问题没有解决:通过命令行实现带安全的MQTTX图形界面的功能。

上一回提到,笔者使用Mosquitto命令行,即使将IP地址、端口号、MQTT用户名、密码、名称以及“--cafile XXX”都加上了、都与实际相一致即与MQTTX图形界面中填入的内容一致,仍然不能向MQTTX图形界面那样,连接远程服务器。笔者尝试过各种方法,也怀疑过是某个参数还需要加入并尝试加入,但都不能正常连接。

由此引出了本回的主角 —— MQTTX CLI。

1. MQTTX CLI简介

MQTTX CLI的主页如下:

简介 - MQTTX CLI 文档

MQTTX CLI是EMQ开源的一款MQTT 5.0命令行客户端工具,也是命令行上的MQTTX旨在帮助开发者在不需要使用图形化界面的基础上,也能更快地开发和调试MQTT服务与应用

使用示例

功能特性

  • 基于Apache License 2.0协议,开放源码
  • 跨平台,支持Windows、macOS、Linux
  • 无依赖限制,基于命令行的安装和使用,无任何环境依赖要求
  • 易于集成,可快速集成到自动化测试脚本中
  • 支持MQTT v3.1.1以及MQTT v5.0
  • 支持CA、自签名证书,以及单、双向SSL认证
  • 性能测试,快速测试MQTT服务的性能

2. MQTTX CLI下载

(1)转到下载页面

登录或跳转到以下页面:

MQTTX CLI: 强大而易用的 MQTT 命令行客户端

(2)选择下载版本

根据自己的电脑配置选择相应的版本。笔者的电脑是Win11 64位,因此选择的是“v1.9.10.cli.win64.exe”。

(3)进行下载

点击以上红色框中的链接,开始下载。

注:由于笔者之前下载过,因此再次下载时有个“ (1)”,如果是首次下载则没有。

(4)查看下载文件

下载完成后,文件名为:mqttx-cli-win-x64.exe(这里仍以笔者第一次下载的文件名为例)。

特别说明:

这里有一点特别说明一下,这个exe文件下载完成之后,可能会被电脑中的防火墙阻住。

 此时进行如下处理:

这样就能够真正下载下来了。

3. MQTTX CLI安装

MQTTX CLI无需安装。

笔者曾经按照正常的软件安装逻辑双击进行安装,结果一闪而过。以管理员身份运行,闪退得更快了。笔者一开始还以为是系统和这个软件存在兼容性问题,后来恍然大悟,这就是个直接在命令行调用的命令,无需安装。

看一下具体的命令提示:

> .\mqttx-cli-win-x64.exe -h
Usage: mqttx [options] [command]An MQTT client for the command lineOptions:-v, --version       output the version number-h, --help          display help for commandCommands:check               Check for updates.conn [options]      Create a connection and connect to MQTT Broker.pub [options]       Publish a message to a topic.sub [options]       Subscribes to one or more topics.bench               MQTT Benchmark in performance testing.simulate [options]  Publish scenario-specific simulation messages at a custom rate and a number of connections.ls [options]        List information based on the provided options.help [command]      display help for command
 .\mqttx-cli-win-x64.exe pub --help
Usage: mqttx pub [options]Publish a message to a topic.Options:-t, --topic <TOPIC>                               the message topic-m, --message <BODY>                              the message body (default: "Hello From MQTTX CLI")-q, --qos <0/1/2>                                 the QoS of the message (default: 0)-r, --retain                                      send a retained message-d, --dup                                         mark as duplicate flag-s, --stdin                                       read the message body from stdin-M, --multiline                                   read lines from stdin as multiple messages-pf, --payload-format-indicator                   the payload format indicator of the publish message-e, --message-expiry-interval <NUMBER>            the lifetime of the publish message in seconds-ta, --topic-alias <NUMBER>                       value that is used to identify the topic instead of using the topicname-rt, --response-topic <TOPIC>                     string which is used as the topic name for a response message-cd, --correlation-data <DATA>                    used by the sender of the request message to identify which requestthe response message is for when it is received-up, --user-properties <USERPROPERTIES...>        the user properties of MQTT 5.0 (e.g. -up "name: mqttx cli")-si, --subscription-identifier <NUMBER>           the identifier of the subscription-ct, --content-type <TYPE>                        a description of the content of the publish message-V, --mqtt-version <5/3.1.1/3.1>                  the MQTT version (default: 5)-h, --hostname <HOST>                             the broker host (default: "localhost")-p, --port <PORT>                                 the broker port-f, --format <TYPE>                               the format type of the input message, support base64, json, hex andcbor-i, --client-id <ID>                              the client id (default: "mqttx_4aae0769")--no-clean                                        set the clean session flag to false-k, --keepalive <SEC>                             send a ping every SEC seconds (default: 30)-u, --username <USER>                             the username-P, --password <PASS>                             the password-l, --protocol <PROTO>                            the protocol to use, mqtt, mqtts, ws, or wss (default: "mqtt")--path <PATH>                                     the path of websocket (default: "/mqtt")--key <PATH>                                      path to the key file--cert <PATH>                                     path to the cert file--ca <PATH>                                       path to the ca certificate--insecure                                        do not verify the server certificate--alpn <PROTO...>                                 set one or multiple ALPN (Application Layer Protocol Negotiation)protocols-rp, --reconnect-period <MILLISECONDS>            interval between two reconnections, disable auto reconnect bysetting to 0 (default: 1000)--maximum-reconnect-times <NUMBER>                the maximum reconnect times (default: 10)-se, --session-expiry-interval <SECONDS>          the session expiry interval in seconds--rcv-max, --receive-maximum <NUMBER>             the receive maximum value--maximum-packet-size <NUMBER>                    the maximum packet size the client is willing to accept--topic-alias-maximum <NUMBER>                    the topic alias maximum value--req-response-info                               the client requests response information from the server--no-req-problem-info                             the client requests problem information from the server-Cup, --conn-user-properties <USERPROPERTIES...>  the connect user properties of MQTT 5.0 (e.g. -Cup "name: mqttxcli")-Wt, --will-topic <TOPIC>                         the will topic-Wm, --will-message <BODY>                        the will message-Wq, --will-qos <0/1/2>                           the will qos-Wr, --will-retain                                send a will retained message-Wd, --will-delay-interval <SECONDS>              the will delay interval in seconds-Wpf, --will-payload-format-indicator             will message is UTF-8 encoded character data or not-We, --will-message-expiry-interval <SECONDS>     lifetime of the will message in seconds-Wct, --will-content-type <CONTENTTYPE>           description of the will message’s content-Wrt, --will-response-topic <TOPIC>               topic name for a response message-Wcd, --will-correlation-data <DATA>              correlation data for the response message-Wup, --will-user-properties <USERPROPERTIES...>  the user properties of will message--save [PATH]                                     save the parameters to the local configuration file, which supportsjson and yaml format, default path is ./mqttx-cli-config.json--config [PATH]                                   load the parameters from the local configuration file, whichsupports json and yaml format, default path is./mqttx-cli-config.json-Pp, --protobuf-path <PATH>                       the path to the .proto file that defines the message format forProtocol Buffers (protobuf)-Pmn, --protobuf-message-name <NAME>              the name of the protobuf message type (must exist in the .protofile)--debug                                           enable debug mode for MQTT.js (default: false)--help                                            display help for command

4. 实际使用和问题

MQTTX CLI与MQTTX同宗同源,因此其命令应该与图形界面连接得更为紧密、也更为接近,应该能够找到与图形界面更为接近的命令选项。

经过笔者的实验和测试,命令如下:

.\mqttx-cli-win64.exe -h <host_ip_address> -p <port> -u <user_name> -P <password> -t <topic> -l mqtts --ca <full_path_of_ca_file>

代入示例值(不是真实值,只是为了说明)的命令如下:

.\mqttx-cli-win64.exe pub -h '123.234.345.456' -p 8877 -u user1 -P 1234 -t sensor -l mqtts --ca 'C:\Program Files\ca.cer'

与前文书中Mosquitto的命令相比较:

.\mosquitto_pub.exe -h '123.234.345.456' -p 8877 -u user1 -P 1234 -t sensor --cafile 'C:\Program Files\ca.cer'

但是,会出现以下错误:

意思也和通过Mosquitto出的错误差不多。

但是,MQTTX CLI比Mosquitto强,至少给出了具体的错误。笔者在网上搜索错误关键字“mqttx-cli-win-x64.exe Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does”,在网上找到了一些网页和博文,比如:

TLS problem : ERR_TLS_CERT_ALTNAME_INVALID · Issue #573 · emqx/MQTTX · GitHub

Enable SSL/TLS for EMQX MQTT broker | EMQ

但似乎都不能直接解决这个问题,直到笔者看到了以下网页:

Enable SSL/TLS Connection | EMQX Enterprise Docs

这里边完全解释了出现此错误的原因以及相应的解决方法:

这一段的详细意思如下:

如果服务器证书公用名称(CN)与客户端在连接过程中指定的服务器地址不匹配,将发生以下错误:

Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: localhost. is not cert's CN: Server

在这种情况下,可以将客户端证书CN设置为与服务器地址匹配,或者使用--insecure选项忽略证书CN验证:

mqttx sub -t 't/1' -h localhost -p 8883 \--protocol mqtts \--ca certs/rootCA.crt \--insecure

也就是说,加入“--insecure”就能够解决问题了。在上边的MQTTX CLI命令行中加入此选项,命令如下:

.\mqttx-cli-win64.exe -h <host_ip_address> -p <port> -u <user_name> -P <password> -t <topic> -l mqtts --ca <full_path_of_ca_file> --insecure

命令示例如下:

.\mqttx-cli-win64.exe pub -h '123.234.345.456' -p 8877 -u user1 -P 1234 -t sensor -l mqtts --ca 'C:\Program Files\ca.cer' --insecure

再次执行命令后,实际结果如下:

错误没有再出现,讷讷狗正常发布消息了。在MQTTX的界面中也收到了信息:

至此,MQTTX和MQTTX CLI的全部功能都已实现了,全部内容也就都讲解完了。Mosquitto、MQTTX、MQTTX CLI的整个下载 、安装、配置,遇到问题、解决问题的全过程也都讲解完了。

这篇关于Windows系统下安装Mosquitto的步骤(7)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961948

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、