Истёкший клиентский или серверный сертификат может одновременно отключить большое число 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.