带有 SSL 加密的 Mosquitto 代理,用于桥接连接

Posted

技术标签:

【中文标题】带有 SSL 加密的 Mosquitto 代理,用于桥接连接【英文标题】:Mosquitto broker with SSL encryption for bridge connection 【发布时间】:2021-03-25 23:13:54 【问题描述】:

让我先解释一下我想要实现的目标,然后再详细介绍我已经尝试过的事情。

因此,我们有一个虚拟机在我们的本地和另一个虚拟机在客户的本地。对这些 VM 的访问仅对某些 IP 地址可用。因此,我们可以说它们对于我们的用例来说足够安全。

来自客户环境的数据通过在这两个环境中设置的 mosquitto 代理流入并流入我们的虚拟机。这是在运行良好的代理桥接的帮助下完成的。但是,由于这个桥接在互联网上,我们希望确保数据是加密的,并且没有人可以通过互联网拦截并以恶意方式使用这些数据。

为了实现这一点,我们正在使用 SSL 代理加密。我尝试的第一种方法是使用PKS加密方法。

这是客户环境中的代理配置。

listener 8883
connection bridgetest
address 147.1.20.1:8883
bridge_identity bridge1
bridge_psk 123456789
topic # both

这是我们环境中的代理配置。

listener 8883 
psk_hint SAAS Deployments
psk_file c:\DemoCompany\psk_file.txt

psk_file.txt 的内容非常简单,与客户环境配置中提供的网桥身份和bridge_psk 相同。

我在这里面临的问题是,即使我将客户环境中的 bridge_identity 或 bridge_psk 更改为 psk_file.txt 中没有的内容,我仍然能够通过网桥连接 2 个代理。 我对此的理解是,如果我将 bridge_psk 更改为一些随机的十六进制代码,连接应该会被拒绝。但这似乎并没有发生。我在这里做错了什么或遗漏了什么?

【问题讨论】:

【参考方案1】:

以下配置文件适用于我从 Ubuntu 上的 mosquitto PPA 提供的 v2.0.9 版本

客户经纪人:

listener 1889

connection bridge
address 127.0.0.1:1890
bridge_identity bridge1
bridge_psk 123456789987654321
topic # both 0

桥梁经纪人

listener 1890
psk_hint my test bridge
psk_file /temp/psk/psk_file.txt
use_identity_as_username true

use_identity_as_username 是必需的,从 Mosquitto v2 开始,allow_anonymous 默认为 false

【讨论】:

感谢您的回复。我会试试这个并很快在这里更新。 另外,我的配置是 Windows 10 上的 mosquitto broker 版本 3.1.1 你的版本号打错了,3.1.1是MQTT协议规范版本。 v2.0.9 是 eclipse.org 提供的最新版本 是的。这对我有用。出于某种原因,让它在端口 8883 上工作似乎仍然很麻烦。但是在 1890 端口上,它就像一个魅力。 嗨。我还有一个疑问。如果我将更多用户添加到代理(服务器)上的 psk_file.txt,如何重新加载此文件而无需重新启动我的 mosquitto 代理?我的主要目标是避免破坏所有已经连接的代理网桥

以上是关于带有 SSL 加密的 Mosquitto 代理,用于桥接连接的主要内容,如果未能解决你的问题,请参考以下文章

Mosquitto 高级应用之SSL/TLS

ubuntu16.04 mosquitto版本多少

天气 SSL SOCKS5 代理加密的 TCP/IP 标头信息

mosquitto配置通过ssl通信

Mosquitto 单向SSL配置

通过 socks 代理的 SSL 套接字 - 客户端 <---> 服务器数据是不是加密?