首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用莫斯科客户端测试VerneMQ broker TLS

用莫斯科客户端测试VerneMQ broker TLS
EN

Stack Overflow用户
提问于 2019-12-31 02:21:07
回答 2查看 2.2K关注 0票数 1

背景

  • 我设置并配置了VerneMQ代理。Broker在docker容器中,我使用docker-compose.yml启动它。以下是我的停靠撰写文件的外观:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3.3'
services:
  db:
    image: erlio/docker-vernemq
    container_name: vernemq1
    network_mode: docker_mysql_default
    restart: always
    environment:
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS: 'off'
      DOCKER_VERNEMQ_PLUGINS.vmq_diversity: 'on'
      DOCKER_VERNEMQ_PLUGINS.vmq_passwd: 'off'
      DOCKER_VERNEMQ_PLUGINS.vmq_acl: 'off'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.auth_mysql.enabled: 'on'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.host: 'docker_mysql'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.port: '3306'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.user: 'vernemq'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.password: 'vernemq'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.database: 'vernemq_db'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.password_hash_method: 'md5'
      DOCKER_VERNEMQ_LISTENER__SSL__CAFILE: '/vernemq/etc/ssl/chain.pem'
      DOCKER_VERNEMQ_LISTENER__SSL__CERTFILE: '/vernemq/etc/ssl/cert.pem'
      DOCKER_VERNEMQ_LISTENER__SSL__KEYFILE: '/vernemq/etc/ssl/privkey.pem'
      DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT: '0.0.0.0:8081'
      DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__USE_IDENTITY_AS_USERNAME: 'off'
      DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__REQUIRE_CERTIFICATE: 'off'
    ports:
      # <Port exposed> : <Port running inside container>
      - '1883:1883'
      - '8081:8081'
    expose:
      # Opens port 1883 on the container
      - '1883'
      - '8081'
      # Where our data will be persisted
    volumes:
     - /var/lib/
     - /home/ubuntu/etc/ssl:/vernemq/etc/ssl
# Name our volume
volumes:
  my-db:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DOCKER_VERNEMQ_LISTENER__SSL__CAFILE: '/vernemq/etc/ssl/chain.pem'
DOCKER_VERNEMQ_LISTENER__SSL__CERTFILE: '/vernemq/etc/ssl/cert.pem'
DOCKER_VERNEMQ_LISTENER__SSL__KEYFILE: '/vernemq/etc/ssl/privkey.pem'
DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT: '0.0.0.0:8081'
DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__USE_IDENTITY_AS_USERNAME: 'off'
DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__REQUIRE_CERTIFICATE: 'off'
  • 我使用openssl客户端测试/验证了TLS连接:openssl s_client -connect 172.18.0.4:8081 -key privkey.pem -cert cert.pem I是从服务器本地主机执行这一连接,172.18.0.4是vernemq容器的IP地址,8081是预期的SSL默认端口(侦听器),并提供了key/cert,这就是结果(我认为这意味着TLS侦听器工作):

问题

我如何使用蚊子客户端或任何其他mqtt客户端来测试?我想在发布和订阅时使用基于TLS的连接。

当我不使用TLS时,我就是这样执行mosquitto_sub (订阅客户端):mosquitto_sub -h <ip_address> -p 1883 -t topic -d -u user -P password -i client-id

这是响应:VerneMQ订阅

当我尝试使用TLS时,我会添加--key和-cert选项来使用私钥和证书:mosquitto_sub -h <ip_address> -p 1883 -t topic -d -u user -P password -i client-id --key privkey.pem --cert cert.pem

我只反复得到Client user sending CONNECT。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2020-06-16 00:22:42

您需要做的一些事情给您的证书目录授予正确的权限,您需要确保将权限设置给运行verneMQ的用户--在我的例子中--它的"vernemq“现在的下一步是设置对证书文件夹的权限。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chown -R vernemq:vernemq /etc/letsencrypt/live

所有配置文件都应采用.pem格式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
listener.ssl.cafile = /etc/letsencrypt/live/mqtts.domain.com/chain.pem
listener.ssl.certfile = /etc/letsencrypt/live/mqtts.domain.com/cert.pem
listener.ssl.keyfile = /etc/letsencrypt/live/mqtts.domain.com/privkey.pem

客户端必须使用Fullchain.pem连接到服务器,如果您没有由中间服务器颁发的域证书“让我们加密权限X3”,则该中介由“DST根CA X3”交叉签名(来自IdenTrust)。IdenTrust被大多数OSes和应用程序广泛信任,我们将“DST X3”作为根CA。如果您不是在太旧的操作系统上,那么您可以从您的本地机器上使用这个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat /etc/ssl/certs/DST_Root_CA_X3.pem /etc/letsencrypt/live/$domain/chain.pem > ca.pem
票数 1
EN

Stack Overflow用户

发布于 2019-12-31 07:25:54

来自mosquitto_sub 男人页面:

加密连接 mosquitto_sub支持TLS加密连接。强烈建议您使用加密连接进行任何比最基本的设置更多的操作。 若要在使用x509证书时启用TLS连接,必须提供其中一个--cafile或-capath作为选项。

-卡帕思 定义包含受信任的PEM编码CA证书的目录的路径。用于启用SSL通信。 为了使证书文件正确工作,证书文件必须以".crt“作为文件的结尾,并且每次添加/删除证书时都必须运行"openssl”。

若要使用mosquitto_sub命令,必须提供带有受信任CA证书的文件或包含可信CA证书集合的目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59542764

复制
相关文章
EMQX vs VerneMQ | 2023 MQTT Broker 对比
EMQX 和 VerneMQ 都是用 Erlang/OTP 开发的高性能、分布式开源 MQTT Broker,以其稳定性、容错性和扩展性著称。
EMQ映云科技
2023/04/21
6810
初识EMQX与安装
EMQ X 基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是开源社区中最流行的 MQTT 消息服务器。EMQ X 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联 网设备的数据采集,和对设备的操作和控制。
叫我阿杰好了
2022/11/07
4.4K0
初识EMQX与安装
MQTT安全性设计详解
MQTT(MQ Telemetry Transport, MQ 遥测传输)。它是一种发布/订阅、极其简单和轻量级的消息传递协议,旨在用于受限设备和低带宽,高延迟或不可靠的网络。设计原则是使网络带宽和设备资源要求最小化,同时还要尝试确保可靠性和一定程度的交付保证。这些原则也使该协议成为新兴的“M2M”或“物联网”连接设备世界的理想选择,并且适用于带宽和电池电量极为宝贵的移动应用。
别打名名
2019/12/23
4K0
MQTT安全性设计详解
Go语言TLS客户端握手
客户端在完成 clientHelloMsg 和 serverHelloMsg 后,开启缓存写入模式,也分为重用 session 和非重用 session 两种情况。服务端在发送完第一批次消息后,等待客户端的回应。
用户10714163
2023/08/18
7150
MQTT 服务器介绍
MQTT 是基于 发布(Publish)/订阅(Subscribe) 模式来进行通信及数据交换的,与 HTTP 的 请求(Request)/应答(Response) 的模式有本质的不同。
全栈程序员站长
2022/08/25
6.9K0
MQTT 服务器介绍
【大家的项目】Akasa 0.1.0 发布: 一个高性能低延迟的 MQTT server (broker)
GitHub 链接 https://github.com/akasamq/akasa
MikeLoveRust
2023/10/05
2190
【大家的项目】Akasa 0.1.0 发布: 一个高性能低延迟的 MQTT server (broker)
MQTT服务器搭建和测试[通俗易懂]
本文将使用Mosquitoo 进行测试,进入到安装页面,下载自己电脑的系统所适配的程序
全栈程序员站长
2022/09/07
4.1K0
MQTT服务器搭建和测试[通俗易懂]
MQTT学习笔记(6)搭建本地MQTT服务器
目前主流的Broker有以下3个: Mosquitto:https://mosquitto.org/ VerneMQ:https://vernemq.com/ EMQTT:http://emqtt.io/
全栈程序员站长
2022/09/02
3.1K0
如何在Tomcat中做TLS客户端认证
常见的https网站做的是服务端认证(server authentication),浏览器通过证书判断你所访问的https://baidu.com是否真的是百度,而不是其他人伪造的网站。同时还对流量加密,防止别人窃听你的流量。
颇忒脱
2019/04/19
2.8K0
如何在Tomcat中做TLS客户端认证
Java物联网开发(一) —— MQTT协议
官方文档传送门 mqtt官网 mqtt中文网 mqtt 3.1.1 英文文档 mqtt 5.0 英文文档 b站mqtt教程
时间静止不是简史
2021/08/12
6.6K0
Java物联网开发(一)  —— MQTT协议
#导入MD文档图片#RocketMQ集群Broker高可用测试
以master01为例,首先停止所有rocketmq进程,然后删除日志和存储信息。所有服务器都执行该操作。
loong576
2021/08/06
4540
#导入MD文档图片#RocketMQ集群Broker高可用测试
Oracle RAC 11g DG Broker配置和测试
Oracle RAC 11g DG Broker配置和测试 本篇在实验环境中实际配置 环境: RHEL 6.5 + Oracle 11.2.0.4 GI、DB + Primary RAC(2 nodes)+ Standby RAC(2 nodes)
Alfred Zhao
2019/05/24
1.1K0
莫斯科地铁交通图
俄罗斯设计公司Art. Lebedev Studio,负责设计新版的《莫斯科地铁交通图》。
ruanyf
2018/09/21
9260
莫斯科地铁交通图
MQTT协议通俗讲解
基本概念 Basic Conception Session 会话 定义 定义:某个客户端(由ClientID作为标识)和某个服务器之间的逻辑层面的通信 生命周期(存在时间):会话 >= 网络连接 ClientID 客户端唯一标识,服务端用于关联一个Session 只能包含这些 大写字母,小写字母 和 数字(0-9a-zA-Z),23个字符以内 如果 ClientID 在多次 TCP连接中保持一致,客户端和服务器端会保留会话信息(Session) 同一时间内 Server 和同一个 ClientID 只能保持一个 TCP 连接,再次连接会踢掉前一个 CleanSession 标记 在Connect时,由客户端设置 0 —— 开启会话重用机制。网络断开重连后,恢复之前的Session信息。需要客户端和服务器有相关Session持久化机制。 1 —— 关闭会话重用机制。每次Connect都是一个新Session,会话仅持续和网络连接同样长的时间。 客户端 Session 已经发送给服务端,但是还没有完成确认的 QoS 1 和 QoS 2 级别的消息 已从服务端接收,但是还没有完成确认的 QoS 2 级别的消息 服务器端 Session 会话是否存在,即使会话状态的其它部分都是空 (SessionFlag) 客户端的订阅信息 (ClientSubcription) 已经发送给客户端,但是还没有完成确认的 QoS 1 和 QoS 2 级别的消息 即将传输给客户端的 QoS 1 和 QoS 2 级别的消息 已从客户端接收,但是还没有完成确认的 QoS 2 级别的消息 (可选)准备发送给客户端的 QoS 0 级别的消息 长连接维护与管理 Keep Alive 心跳 目的是保持长连接的可靠性,以及双方对彼此是否在线的确认。 客户端在Connect的时候设置 Keep Alive 时长。如果服务端在 1.5 * KeepAlive 时间内没有收到客户端的报文,它必须断开客户端的网络连接 Keep Alive 的值由具体应用指定,一般是几分钟。允许的最大值是 18 小时 12 分 15 秒 Will 遗嘱 遗嘱消息(Will Message)存储在服务端,当网络连接关闭时,服务端必须发布这个遗嘱消息,所以被形象地称之为遗嘱,可用于通知异常断线。 客户端发送 DISCONNECT 关闭链接,遗嘱失效并删除 遗嘱消息发布的条件,包括: 服务端检测到了一个 I/O 错误或者网络故障 客户端在保持连接(Keep Alive)的时间内未能通讯 客户端没有先发送 DISCONNECT 报文直接关闭了网络连接 由于协议错误服务端关闭了网络连接 相关设置项,需要在Connect时,由客户端指定 Will Flag —— 遗嘱的总开关 0 -- 关闭遗嘱功能,Will QoS 和 Will Retain 必须为 0 1 -- 开启遗嘱功能,需要设置 Will Retain 和 Will QoS Will QoS —— 遗嘱消息 QoS 可取值 0、1、2,含义与消息QoS相同 Will Retain —— 遗嘱是否保留 0 -- 遗嘱消息不保留,后面再订阅不会收到消息 1 -- 遗嘱消息保留,持久存储 Will Topic —— 遗嘱话题 Will Payload —— 遗嘱消息内容 消息基本概念 报文标识 Packet Identifier 存在报文的可变报头部分,非零两个字节整数 (0-65535] 一个流程中重复:这些报文包含 PacketID,而且在一次通信流程内保持一致: PUBLISH(QoS>0 时),PUBACK,PUBREC,PUBREL,PUBCOMP SUBSCRIBE, SUBACK UNSUBSCIBE,UNSUBACK 新的不重复:客户端每次发送一个新的这些类型的报文时都必须分配一个当前 未使用的PacketID 当客户端处理完这个报文对应的确认后,这个报文标识符就释放可重用。 独立维护:客户端和服务端彼此独立地分配报文标识符。因此,客户端服务端组合使用相同的报文标识符可以实
PM吃瓜
2019/08/20
2.5K0
RocketMQ5.0 如何配置TLS加密传输?
以下全部操作在的目录在:/etc/rocketmq, 并且Namesrv、Broker、Dashboard在同一个机器上, 实际操作时, dashboard或者客户端可以是其他的机器
小伟
2023/10/08
5951
RocketMQ5.0 如何配置TLS加密传输?
快速搭建Fabric测试网络(Docker in Ubantu 18.04 TLS)
本文所述的内容是在2019年1月8号开始的,于2019年1月10号结束。在Win10家庭版上装的Ubantu 18.04版本的虚拟机,文档主要参考的是Fabric Release-1.4版本。另外,我喜欢Go,所以接下来关于链码的演示,没有nodejs、python和java什么事,想看这些,可以移步未来我写的文章。Orz...
天地一小儒
2022/12/28
7280
Kafka 2.5.0发布——弃用对Scala2.11的支持
下载地址:https://kafka.apache.org/downloads#2.5.0
大数据流动
2020/04/24
2K0
Kafka 2.5.0发布——弃用对Scala2.11的支持
RocketMQ 5.0 如何配置TLS加密传输?
以下全部操作在的目录在:/etc/rocketmq, 并且Namesrv、Broker、Dashboard在同一个机器上
小伟
2023/05/04
1.4K0
RocketMQ 5.0 如何配置TLS加密传输?
springboot + rabbitmq 做智能家居,我也没想到会这么简单
前一段有幸参与到一个智能家居项目的开发,由于之前都没有过这方面的开发经验,所以对智能硬件的开发模式和技术栈都颇为好奇。
程序员小富
2020/06/21
2.4K1
springboot + rabbitmq 做智能家居,我也没想到会这么简单
我也没想到 springboot + rabbitmq 做智能家居,会这么简单
前一段有幸参与到一个智能家居项目的开发,由于之前都没有过这方面的开发经验,所以对智能硬件的开发模式和技术栈都颇为好奇。
程序员小富
2020/07/13
1.2K0
我也没想到 springboot + rabbitmq 做智能家居,会这么简单

相似问题

获取连接到Vernemq broker的活动客户端数

15

VerneMQ TLS配置出现使用letsencrypt握手失败的错误

135

客户端- TLS连接到MQTT Broker异常:没有可用的密码

117

VerneMQ插件强制断开客户端

11

单元测试tls客户端

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文