Жизненный цикл и обновление сертификата
Внимание
Это документация по Azure Sphere (устаревшая версия). Служба Azure Sphere (устаревшая версия) выходит на пенсию 27 сентября 2027 г., и к этому времени пользователи должны перейти в Azure Sphere (интегрированная). Используйте селектор версий, расположенный над toC, чтобы просмотреть документацию по Azure Sphere (интегрированная).
Срок действия пар ключей сертификатов клиента и сертификатов ЦС регулярно истекает. Сетевая инфраструктура и устройства должны иметь возможность учитывать срок истечения действия сертификата и предоставлять новый сертификат без потери подключения. Сертификаты корневого ЦС, используемые при проверке подлинности сервера RADIUS, и сертификаты клиента, используемые при проверке подлинности устройства, обновляются разными способами.
Внимание
Так как идентификаторы сертификатов используются во всей системе, команда azsphere или вызов функции, который добавляет новый сертификат, могут перезаписать сертификат, который был добавлен более ранней командой или вызовом функции. Это может привести к сбоям сетевого подключения. Настоятельно рекомендуется разрабатывать четкие процедуры обновления сертификатов и тщательно выбирать идентификаторы сертификатов.
Дополнительные сведения о том, как Azure Sphere использует идентификаторы сертификатов, см. в этом разделе.
Обновление сертификата корневого ЦС
Сертификат ЦС — это корневой ЦС сертификата проверки подлинности на сервере RADIUS. Если срок действия сертификата ЦС истек или PKI для сервера изменилась (например, если сервер получит новый корневой ЦС от другого центра сертификации), устройства Azure Sphere больше не смогут выполнить проверку подлинности сервера проверки подлинности RADIUS. Однако устройства должны продолжать работать.
В обычной беспроводной сети невозможно выполнить ненадежную прямую миграцию; то есть вы не можете обновить все устройства Azure Sphere в тот момент, когда корневой ЦС становится недействительным. Устройства могут быть отключены в критический момент, или точность отсчета времени при разных установках может отличаться. Высокоуровневое приложение должно иметь возможность получить новый сертификат корневого ЦС до истечения срока действия или изменения текущего сертификата, чтобы новый сертификат был готов для использования при необходимости.
Рекомендуется создать и включить вторую сеть, которая имеет ту же конфигурацию, что и существующая сеть, но использует новый сертификат корневого ЦС. При сбое работы существующего сертификата корневого ЦС в исходной сети операционная система автоматически попытается подключиться ко второй сети. Затем приложение может заменить сертификат в исходной сети новым корневым ЦС и удалить вторую сеть. После этого устройство может подключаться с помощью исходной сети, в которой теперь есть новый корневой ЦС. На следующем рисунке показан этот подход.
Для эффективной обработки обновления сертификата корневого ЦС выполните следующие действия в высокоуровневом приложении:
В рамках нормальной работы приложение настраивает Network1 типа
WifiConfig_Security_Wpa2_EAP_TLS
. Эта сеть связана с сертификатом клиента для устройства и с корневым сертификатом CA1, который является исходным корневым ЦС сервера RADIUS.Приблизительно за 90 дней до истечения срока действия RootCA устройство получает уведомление из облака на устройство о том, что в ближайшее время для сервера RADIUS потребуется новый сертификат корневого ЦС. Уведомление может активироваться сетевым администратором или другим оператором; возможные механизмы уведомлений включают в себя сообщение Центр Интернета вещей Azure или Azure IoT Central cloud-to-device.
Администратор сети несет ответственность за обновление сертификата на сервере RADIUS и правильность обновления устройств Azure Sphere.
Приложение получает новый корневой ЦС и вызывает функцию CertStore_InstallRootCACertificate, чтобы сохранить его в качестве корневого сертификата CA2.
Приложение создает сеть Network2, вызывая функцию WifiConfig_AddDuplicateNetwork для дублирования конфигурации Network1. Затем оно связывает корневой сертификат CA2 с сетью 2 и активирует Network2. Если Network2 активирована на устройстве и имеет подключение к Интернету, устройство будет использовать ее, если Network1 недоступна.
Приложение выполняет опросы ежедневно, вызывая функцию WifiConfig_GetConnectedNetworkId, чтобы определить, к какой сети подключено устройство.
Если во время ежедневной проверки подключенной сети происходит сбой, ошибка могла возникнуть из-за проблемы с сертификатом на стороне сервера или устройства или из-за какой нибудь другой проблемы. Сведения об устранении неполадок с сетью см. в статье "Устранение неполадок в сети".
Если устройство подключено к Network1, это означает, что срок действия сертификата еще не истек и все работает правильно. Приложение повторяет этот шаг, пока устройство не подключится к Network2.
Если устройство подключено к Network2, это означает, что срок действия старого сертификата истек, обновленная система PKI настроена на сервере RADIUS и устройство может проверить подлинность сервера с помощью корневого сертификата CA2.
Когда устройство работает с Network2 правильно, приложение выполняет следующие изменения в конфигурации сети:
- Переименовывает корневой сертификат CA2 в корневой сертификат CA1, вызывая функцию CertStore_MoveCertificate. Эта функция перезаписывает корневой сертификат CA1 с истекшим сроком действия содержимым корневого сертификата CA2.
- Перезагружает конфигурацию Network1, вызывая функцию WifiConfig_ReloadConfig. Конфигурация Network1 теперь соответствует текущей сети.
- Удаляет конфигурацию Network2, вызывая функцию WifiConfig_ForgetNetworkById.
Обновление сертификата клиента
Сертификат клиента содержит пару открытых и закрытых ключей, которые используются для проверки подлинности устройства Azure Sphere. Срок действия сертификата клиента (как и сертификата корневого ЦС) время от времени истекает и устройство должно иметь возможность предоставлять новый сертификат. Высокоуровневое приложение отвечает за получение нового сертификата до истечения срока действия существующего сертификата. Приложение может получить дату и время истечения срока действия сертификата, вызвав функцию CertStore_GetCertificateNotAfter.
Эта процедура показана на рисунке ниже. Этот шаблон позволяет коду обновления сертификата использовать постоянные идентификаторы сертификатов, такие как ClientCert1 и ClientCert2, вместо создания уникального имени для каждого нового сертификата. Кроме того, для этого не требуется выполнять очистку сетевых переключателей или сертификата клиента.
Для эффективной обработки обновления сертификата клиента выполните следующие действия в высокоуровневом приложении:
В рамках нормальной работы приложение настраивает Network1 типа
WifiConfig_Security_Wpa2_EAP_TLS
. Эта сеть связана с сертификатом клиента для устройства (ClientCert1) и корневым ЦС сервера RADIUS. Перед запуском процедуры обновления приложение проверяет, подключено ли устройство к Network1, вызывая функцию WifiConfig_GetNetworkIdByConfigName и WifiConfig_GetConnectedNetworkId. Если идентификаторы сети совпадают, вы можете быть уверены в том, что приложение подключено к требуемой сети.Приложение вызывает функцию CertStore_GetCertificateNotAfter с регулярными интервалами, чтобы определить срок действия сертификата клиента. Кроме того, приложение может сохранить дату окончания срока действия в изменяемом хранилище. Однако оно по-прежнему должно проверять дату окончания срока действия каждый день и после каждой перезагрузки.
Приложение сравнивает дату и время окончания срока действия с текущими датой и временем. Если срок действия сертификата истекает в заранее определенный пороговый период, приложение получает новый сертификат. Вы можете выбрать длительность порогового периода. Рекомендуется получить новый сертификат по крайней мере четыре недели до истечения срока действия, если устройство находится в автономном режиме в течение длительного периода времени или сталкивается с повторяющимися проблемами сети или сервера. Чем раньше вы выполните проверку, тем больше времени будет в распоряжении для устранения любых проблем.
Приложение получает новый сертификат от соответствующего издателя сертификата. Ответственность за выбор поставщика сертификата несет администратор локальной сети.
Приложение сохраняет новый сертификат как ClientCert2, вызывая функцию CertStore_InstallClientCertificate, и добавляет его в конфигурацию Wi-Fi Network1, вызывая функцию WifiConfig_SetClientCertStoreIdentifier.
Приложение повторно загружает конфигурацию Wi-Fi, вызывая функцию WifiConfig_ReloadConfig. Этот шаг делает ClientCert2 доступным для устройства, которое использует его в сетевых подключениях.
Проверьте, установлено ли сетевое подключение.
Успешное подключение означает, что ClientCert2 теперь является допустимым.
Переименуйте ClientCert2 в ClientCert1, вызвав функцию CertStore_MoveCertificate.
Отключите Network1, вызвав функцию WifiConfig_SetNetworkEnabled, чтобы установить для включенного состояния сети значение false, а затем повторно включите Network1, вызвав функцию WifiConfig_SetNetworkEnabled, чтобы установить для включенного состояния значение
true
. Отключение и повторное включение конфигурации делает содержимое переименованного сертификата доступным для приложения.
Сбой при подключении означает, что ClientCert2 еще не является допустимым или что произошла какая-либо другая ошибка.
- Если сертификат еще не является допустимым, перейдите к шагу 7, чтобы вернуть конфигурацию сети в исходное состояние.
- Если произошла другая ошибка, ознакомьтесь с разделом "Устранение неполадок сети" для получения справки и повторных попыток подключения.
Независимо от того, выполнено ли сетевое подключение, перезагрузите конфигурацию Wi-Fi, вызвав функцию WifiConfig_ReloadConfig. Если подключение установлено успешно, перезагруженная конфигурация будет использовать новый ClientCert1, который был заменен посредством ClientCert2. Если подключение не удалось, перезагруженная конфигурация будет использовать ClientCert1.