EMQ功能使用(一) 实现MQTTS协议

Python020

EMQ功能使用(一) 实现MQTTS协议,第1张

前言

EMQ是带有SSL功能的,需要进行简单的配置,才能使用。下面就简单说一下如何实现自签证书。

利用OpenSSL签发证书

配置到EMQX的emqx.conf

如果启用单向认证的话,客户端不需要证书都可以连接。这里的listener.ssl.external.fail_if_no_peer_cert = true 注释掉就启用单向认证。启用双向认证。那么客户端就必须导入CA和client的证书才可以连接。

重新启动EMQX

工具测试

我这里使用EMQ官方出品的MQTTX工具

参考: https://www.cnblogs.com/wunaozai/p/12367497.html

MQTTBox

从MQTTBox应用程序创建新的MQTT客户端时,您可以指定各种连接设置。大多数设置默认设置为最常用的值,但是您可能仍需要自定义设置以根据需要测试MQTT客户端。本文档详细解释了每个客户端设置属性,以便更好地理解客户端连接和实际的MQTT协议。

MQTT客户端名称: 用于标识MQTT客户端并在仪表板上显示的名称。它可以是任何字符串值。

例如:client_test_1

客户端ID: 客户端标识符是连接到MQTT代理的每个MQTT客户端的标识符。对于给定的经纪人,每个客户应该是唯一的。代理使用它来识别客户端和客户端的当前状态。它默认是自动生成的。如果尝试连接具有相同客户端标识符的两个MQTT客户端,则代理将拒绝连接。当您打开2个MQTTBox应用程序实例时,请确保您拥有唯一的客户端ID,否则您的客户将被代理拒绝并可能显示为脱机。

例如:client_id_1

将时间戳附加到MQTT客户端ID?: 如果选中,则时间戳将附加到客户端ID。默认情况下启用此选项。很多时候,用户在相同或不同的机器上打开多个MQTTBox应用程序实例,这些机器具有相同的MQTT客户端设置,包括不同的客户端ID。这会导致客户端连接由于相同的客户端ID而被代理拒绝。如果启用此选项,MQTTBox会将时间戳附加到每个客户端ID,使其几乎唯一,这有助于您节省调试不必要问题的时间。

Broker是否符合MQTT v3.1.1 ?: 如果要连接的MQTT代理仅支持旧版本的MQTT协议3.1或更低版本(v3.1.1是最新版本和当前标准版),则应取消选中此选项。默认情况下,它会被检查并假定MQTT代理符合当前的MQTT标准v3.1.1(或更高版本)。

协议: MQTT客户端用于连接MQTT代理的网络协议。

MQTTBox支持TCP,SSL / TLS,MQTT,MQTTS,WebSockets(WS)和Secure WebSockets(WSS)。根据您使用MQTTBox应用程序的平台,由于平台限制,可能不支持所有协议。

请 在此处 查看每个平台支持的MQTTBox功能列表。

主机: 要连接的MQTT主机。确保根据所选的MQTT连接协议指定正确的主机和端口号。如果您提到错误的端口号或交换端口号,MQTT客户端可能无法连接。

例如:test.mosquitto.org:8080

Clean Session? :clean session标志指示代理是否客户端想要建立持久会话。如果您需要持久会话,即代理将存储客户端的所有订阅以及所有丢失的消息,则在订阅服务质量(QoS)1或2时,取消选中/不选择此选项。默认情况下会选中此选项或是,这意味着代理将启动新会话,不会为客户端存储任何内容,也会清除先前持久会话中的所有信息。

在应用程序启动时自动连接?: 如果您选中/是此选项,客户端将尝试在启动MQTTBox应用程序时自动连接到代理,并且可以处于“已连接”或“连接错误”状态,具体取决于客户端是否已连接到代理或不。如果未选中/没有此选项,客户端将处于“未连接”状态,您需要手动将客户端连接到代理。

您可以从MQTTBox仪表板连接,断开连接,重新连接MQTT客户端

用户名: 经纪人所需的用户名(如果有)。MQTT允许发送用于验证和授权客户端的用户名。

密码: 经纪人要求的密码(如果有)。MQTT允许发送密码以进行客户端的身份验证和授权。 请注意,所有密码都以纯文本格式保存。确保您永远不会在MQTTBox应用程序中保存生产密码。事实上,所有字段都保存为纯文本,请确保您永远不会在MQTTBox应用程序中保存任何敏感信息/设置

重新安排Ping? 如果选中/是,则在发送数据包后重新安排ping消息。

队列传出QoS零消息: 如果选中/是,如果客户端和代理之间的连接断开,则客户端队列的传出QoS零消息。建立连接后,将发布所有这些消息。

重新连接周期(以毫秒为单位): 两次重新连接之间的间隔

连接超时(以毫秒为单位): 收到CONNACK之前等待的时间

KeepAlive(以秒为单位): keep alive是一个时间间隔,客户端通过向代理发送常规PING请求消息来提交。具有PING响应和这种机制的代理响应将允许双方确定另一方是否仍然存活且可达。默认设置为10秒,设置为0表示禁用。

Will Settings - will消息是MQTT Client最后遗嘱的一部分。当客户端断开连接时,它允许通知其他客户端。连接客户端将在CONNECT消息中以MQTT消息和主题的形式提供其意愿。如果此客户端无法正常断开连接,则代理会自动代表客户端发送此消息。

将设置 - 主题: 要发布的主题将是有效负载。一个简单的字符串,可以使用正斜杠作为分隔符进行分层结构化。

例如:topic_test_1或家庭/厨房/湿度

将设置 - QoS: 发布具有QoS集的有效负载。默认情况下为0。

将设置 - 保留: 保留will有效载荷的标志。

将设置 - 有效负载: 客户端断开连接时要发布的消息。

要发布 的主题 是要发布到的主题。一个简单的字符串,可以使用正斜杠作为分隔符进行分层结构化。

例如:topic_test_1或家庭/厨房/湿度

QoS: 此消息的服务质量等级(QoS)。级别(0,1或2)确定传递的消息的保证。

保留: 此标志确定代理是否将消息作为上一个已知的良好值保存到指定主题。订阅该主题的新客户将在订阅后立即收到有关该主题的最后保留消息。

要删除主题的保留消息,请发送包含该主题的零字节负载的保留消息。

有效负载: 这是要发布到主题的消息的实际内容。

主题: 是要订阅的String主题。您可以为主题指定单级(+)和多级(#)订阅。

例如:topic_test_1或家庭/ + /湿度或家庭/#

QoS: 此消息的服务质量等级(QoS)。级别(0,1或2)确定传递的消息的保证。