我需要通过 TLS 与 EMQX 代理建立 MQTT 通信,但是当我尝试连接到代理时,出现错误 16#8730 和诊断子功能 5。根据文档,错误在于未授权(不正确)密码或用户名),但我很确定我拥有正确的凭据。我安全地保护了项目,并添加了从 EMQX 下载的 CA 证书。
(EMQX证书(CA)我添加到证书管理器到证书颁发机构(CA)选项卡。后来我发现在MQTT示例中他们将证书添加到受信任证书和根证书选项卡。这会导致这个问题吗?)
信息:
PLC: S7-1200, firmware v4.5
LMQTT 4.0.2, TIA Portal v17.
在附图中,您可以看到我的LMQTT配置。
(我尝试设置keepAlive或willTopic,但还是不行。)
感谢您的帮助!
经过广泛调查,我发现PLC S7-1200不支持带有SNI的TLS。然而,大多数云无服务器代理,例如 HiveMQ 和 EMQX,都需要 SNI 支持。
解决方案是创建一个自定义代理(例如 Mosquitto)并设置没有 SNI 的 TLS。我已经使用静态 IP 在我的 Raspberry Pi 上成功设置了 Mosquitto,现在它可以完美运行。