使用 SSL 加密的 Mosquitto 代理,用于桥接

Mosquitto broker with SSL encryption for bridge connection

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

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

来自客户环境的数据通过在这两个环境中设置的 mosquitto 代理流入并流入我们的 VM。这是在工作正常的经纪人桥接的帮助下完成的。然而,由于这个桥接在互联网上,我们希望确保数据是加密的,并且没有人可以通过互联网拦截并以恶意方式使用这些数据。

为此,我们正在使用 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 更改为一些随机的十六进制代码,连接应该会被拒绝。但这似乎并没有发生。我是不是做错了什么或遗漏了什么?

以下配置文件适用于从 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

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