Mosquitto: 配置 Mosquitto 连接到另一台服务器(桥接)

本文档属于桥接指南的一部分。您可以在此处查看完整指南:如何连接 Mosquitto 服务器(桥接)

👋 欢迎来到 Stackhero 文档!

Stackhero 提供即用型 Mosquitto MQTT 云 解决方案,具有众多优势,包括:

  • 无限制的消息交换和传输。
  • 通过外部 API 进行无限制的设备认证。
  • 针对主题、用户和操作的高级 ACL
  • 使用 HTTPS 保护的可定制域名(例如,https://mqtt.your-company.com)。
  • 只需点击即可轻松更新
  • 专用私有 VM提供的最佳性能和强大安全性

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 Mosquitto MQTT 云托管 解决方案!

在此示例中,远程服务器将使用专用用户通过 TLS 加密连接到 Stackhero 实例,以实现最大安全性。

首先,在 Stackhero MQTT 实例上创建一个新用户。我们称之为 bridge-1,密码为 secretPassword

接下来,在远程 Mosquitto 服务器上,您可以通过在 mosquitto.conf 配置文件(通常位于 /etc/mosquitto/mosquitto.conf)的末尾添加以下行来进行编辑:

# TODO: 将 "<XXXXXX>.stackhero-network.com" 和 "<PORT_TLS>" 替换为您的 Stackhero 实例信息
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>

# TODO: 将 "bridge-1" 和 "secretPassword" 替换为新创建用户的凭据
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword

start_type automatic
try_private true

# 要共享的主题、方向和 QOS。
# 注意,“both” 似乎由于未知原因不起作用。
topic # out 2
topic # in 2

# 启用 TLS 连接以加密远程 Mosquitto 服务器和 Stackhero 实例之间的数据。
bridge_insecure false
bridge_capath /etc/ssl/certs

在使用新配置重启 Mosquitto 之前,请确保远程服务器上存在 TLS 证书。

检查 /etc/ssl/certs 目录是否存在并包含文件,使用命令:

ls /etc/ssl/certs

如果存在并包含文件,您可以简单地重启您的 Mosquitto 服务器。

如果不存在,您可以考虑执行以下命令之一:

  • Ubuntu/Debian 上,您可以运行:

    sudo apt-get install ca-certificates
    
  • Alpine Linux 上,您可以运行:

    apk add ca-certificates
    

或者,您可以手动下载证书。为此,请使用以下命令将 CA 证书下载到 /etc/mosquitto/isrgrootx1.pem

wget https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/mosquitto/isrgrootx1.pem

然后,编辑 mosquitto.conf 文件,将 bridge_capath /etc/ssl/certs 替换为 bridge_cafile /etc/mosquitto/isrgrootx1.pem

最后,重启您的 Mosquitto 服务器。

有关桥接配置的更多信息,您可以参考 Mosquitto 官方文档