Ошибка сокета подключения Mosquitto MQTT (подключение от ПЛК)
Я привык подключать PLC к брокеру Mosquitto в облаке VPS через порт 8883 (безопасный). Но на этот раз функциональный блок всегда выдает ошибку 80E4 (действительный CA не найден). Я проверил все условия для подключения к MQTT из ПЛК, они верны.
Я не думаю, что проблема возникает из-за версий брокера или TLS, потому что я могу подключиться к нему с помощью других приложений с tls v1.1 и v1.2, когда я пытаюсь подключиться с TLS v1.0 (временно отключите TLS v1.0 для проверки) (приложением mqttfx или C#), брокер показывает ошибку "протокол неподдержки". Но когда я подключаюсь из ПЛК, брокер просто показывает ошибку:
Msgstr "Новое соединение с IP на порту 8883. Ошибка сокета на клиенте <'Неизвестно'>, отключение".
Эта ошибка сокета происходит только при подключении из ПЛК. Итак, что является основной причиной ошибки сокета и что я должен сделать, чтобы найти решение проблемы? Я использую PLC S7-1500 Siemens.
Благодарю.
0 ответов
После ручной проверки с помощью wireshark я обнаружил, что версия сертификата не соответствует конфигурации сервера и конфигурации процессора. Поскольку ЦП поддерживает только сертификат x.509 v3, но серверный сертификат x509 v1, это является причиной разрыва соединения.
Чтобы установить защищенную связь MQTT между SIMATIC S7-CPU (клиент MQTT) и брокером MQTT в вашей сети, должны быть выполнены следующие критерии:
- MQTT-брокер установлен и предварительно настроен для процесса TLS
- Требуемый сертификат CA брокера MQTT под рукой
- Время дня процессора было установлено на текущее время.
Сертификат всегда содержит период действия, в течение которого сертификат действителен. Чтобы иметь возможность шифрования с помощью сертификата, время дня S7-CPU также должно быть в пределах этого периода действия. На совершенно новом S7-CPU или после полной перезагрузки S7-CPU внутренним часам присваивается значение по умолчанию, которое выходит за пределы срока действия сертификата. Затем сертификат помечается как недействительный.
Еще одна вещь, которую стоит рассмотреть, - сконфигурировали ли вы MQTT-брокер таким образом, чтобы также требовалась аутентификация клиента MQTT, тогда вам также необходимо импортировать сертификат клиента.