Истёкший клиентский или серверный сертификат может одновременно отключить большое число MQTT-устройств. Самая сложная ситуация возникает, когда обновление сертификата доставлялось через тот же канал, который уже перестал работать.

Сначала определите, какой сертификат истёк и корректно ли время на устройстве. Затем используйте предусмотренный безопасный bootstrap или физический сервисный канал, не отключая проверку TLS глобально.

Что сделать в первую очередь

  • Сохраните код TLS-ошибки и серийный номер устройства.
  • Проверьте дату, время и доверенный корневой сертификат.
  • Определите: истёк broker certificate или client certificate.
  • Оцените число отключённых устройств и доступные каналы управления.

Почему возникает проблема

Ротация ломается из-за отсутствия запаса времени, неверных часов или единственного сертификата без перекрытия сроков.

  • Устройство долго было офлайн и пропустило обновление.
  • RTC сбросился после потери питания.
  • Новый CA не был добавлен до смены сертификата broker.
  • Срок всех client certificates одинаков.
  • Нет резервного bootstrap credential.

Пошаговая диагностика

  • Проверьте TLS handshake и конкретный alert.
  • Сравните системное время устройства с UTC.
  • Проверьте цепочку доверия broker.
  • Найдите последнюю успешную ротацию для устройства.
  • Испытайте процедуру на одном изолированном экземпляре.

Как исправить

Восстановление должно сохранять аутентификацию устройства и не создавать общий небезопасный ключ для всего парка.

  • Исправьте синхронизацию времени через защищённый источник.
  • Используйте перекрывающиеся trust anchors при смене CA.
  • Выдавайте новый client certificate после проверки уникальной идентичности.
  • Добавьте ограниченный bootstrap-канал или сервисную процедуру.
  • Распределите сроки истечения и запускайте ротацию заранее.

Как проверить результат

  • Устройство проверяет broker и успешно аутентифицируется.
  • Старый отозванный сертификат больше не работает.
  • Повторная ротация проходит без потери MQTT-сессии.
  • Мониторинг показывает срок сертификата каждого устройства.

Как не допустить повторения

  • Начинайте обновление задолго до истечения.
  • Мониторьте сертификаты и офлайн-устройства.
  • Тестируйте смену CA с перекрытием цепочек.
  • Храните уникальные ключи в защищённом хранилище устройства.

Чего не стоит делать

  • Не отключайте TLS verification для восстановления.
  • Не выдавайте один общий сертификат всему парку.
  • Не передавайте приватный ключ через открытый MQTT topic.

Что подготовить для диагностики

  • Тип устройства и версия прошивки.
  • TLS-ошибка и время устройства.
  • Цепочки старого и нового CA без приватных ключей.
  • Описание доступных каналов обновления.

Частые вопросы

Можно ли временно разрешить просроченный сертификат?

Это создаёт опасный обход проверки и редко решает доставку обновления правильно; безопаснее использовать предусмотренный bootstrap или сервисный канал.

Зачем распределять сроки истечения?

Чтобы не потерять весь парк одновременно и обновлять устройства контролируемыми партиями.

Когда стоит обратиться за помощью

Если устройства уже офлайн и не имеют резервного канала, потребуется спланировать восстановление по партиям с проверкой идентичности каждого типа устройства.

Итог

Ротация MQTT-сертификатов должна быть частью жизненного цикла устройства. Я могу помочь восстановить подключение, настроить безопасное обновление и мониторинг сроков без ослабления TLS.