Mosquitto MQTT 连接套接字错误(从 PLC 连接)

Mosquitto MQTT 连接套接字错误(从 PLC 连接)

我习惯通过 8883 端口(安全)将 PLC 与 VPS 云上的 mosquitto 代理连接。但这次,功能块总是抛出 80E4 错误(未找到有效的 CA)。我已检查从 PLC 连接到 MQTT 的所有条件,它们都是正确的。

我不认为问题出在代理或 TLS 版本上,因为我可以通过其他使用 tls v1.1 和 v1.2 的应用程序连接到它,当我尝试使用 TLS v1.0 连接(暂时禁用 TLS v1.0 进行测试)(通过 mqttfx 或 C# 应用程序)时,代理显示错误“不支持协议”。但是当我从 PLC 连接时,代理只显示错误:

“来自端口 8883 上的 IP 的新连接。客户端 <'未知'> 上的套接字错误,正在断开连接”。

此套接字错误仅当我从 PLC 连接时才会发生。那么,套接字错误的根本原因是什么?我应该怎么做才能找到问题的解决方案?我使用 PLC s7-1500 西门子。

谢谢。

答案1

要在网络中的 SIMATIC S7-CPU(MQTT 客户端)和 MQTT 代理之间建立安全的 MQTT 通信,必须满足以下条件:

  • MQTT 代理已安装并预配置为 TLS 进程
  • MQTT 代理所需的 CA 证书已准备好
  • CPU 的时间已设置为当前时间。

证书始终包含有效期,证书在此期间有效。为了能够通过证书加密,S7-CPU 的时间也需要在此有效期内。在全新 S7-CPU 上或完全重置 S7-CPU 后,内部时钟会设置为证书有效期之外的默认值。然后证书将被标记为无效。

另一件需要考虑的事情是您是否已将 MQTT 代理配置为也需要 MQTT 客户端身份验证,那么您还必须导入客户端证书。

答案2

手动使用 wireshark 检查后,我发现证书版本与服务器配置和 CPU 配置不匹配。因为 CPU 只支持 x.509 v3 证书,但服务器发布的是 x509 v1 证书,这就是连接崩溃的原因。

相关内容