Настройка сети EAP-TLS в приложении
EAP-TLS можно настроить в высокоуровневом приложении или вручную с помощью az sphere
команд. Для настройки сети и подключения к ней приложение использует API Certstore и WifiConfig .
Требования
Чтобы настроить сеть EAP-TLS, высокоуровневое приложение должно включить соответствующие файлы заголовков, включить необходимые возможности в манифесте приложения и получить доступ к сертификатам, необходимым для проверки подлинности.
Файлы заголовков
Приложение должно содержать следующий заголовок:
#include <applibs/wificonfig.h>
Если приложение вызывает API CertStore для управления сертификатами, оно также должно содержать заголовок CertStore. Этот заголовок не требуется для использования функций WifiConfig , таких как WifiConfig_GetRootCACertStoreIdentifier , которые получают сведения о сертификате.
#include <applibs/certstore.h>
Манифест приложения
Манифест приложения должен включать возможность EnterpriseWiFiConfig для настройки сети EAP-TLS. Он также должен иметь возможность WifiConfig для использования функций WifiConfig_*, которые не управляют функциями EAP-TLS. Наконец, если приложение также управляет сертификатами, оно должно включить возможность CertStore.
Не включайте возможности, которые не требуются приложению; это создает угрозу безопасности. Если сертификаты будут обновляться вручную, не указывайте CertStore. Используйте эту возможность, только если приложение отвечает за хранение сертификатов на устройстве и управление ими.
В следующем примере показано, как задать все три возможности в файле app_manifest.json:
"Capabilities": {
"WifiConfig" : true,
"EnterpriseWiFiConfig" : true,
"CertStore" : true
}
Сертификаты
Сертификат клиента для устройства должен быть доступен на устройстве. Кроме того, если сеть EAP-TLS настроена для взаимной проверки подлинности, на устройстве также должен быть установлен сертификат корневого ЦС для сервера RADIUS вашей сети. Оба сертификата должны быть в формате PEM: PKCS1 или PKCS8. Сведения о сертификатах и их получении см. в статье Приобретение и развертывание сертификатов EAP-TLS .
Установка сертификатов
Прежде чем приложение сможет настроить сеть EAP-TLS, оно должно иметь доступ к корневому ЦС и сертификатам клиента для проверки подлинности. Получение и развертывание сертификатов для сетей EAP-TLS описывает стратегии получения сертификатов и их загрузки на устройство в виде PEM-файлов. Вы несете ответственность за приобретение и развертывание сертификатов; проверка с администратором сети для получения дополнительных сведений.
После того как сертификаты находятся на устройстве, приложение может установить их для использования. В примере сертификатов показано, как их установить. Ниже приведены основные шаги.
Убедитесь, что в хранилище сертификатов достаточно места. Пространство хранилища сертификатов ограничено, поэтому приложение должно вызвать CertStore_GetAvailableSpace , прежде чем пытаться установить сертификат. Если недостаточно места, приложение должно удалить существующий сертификат, чтобы освободить место для нового сертификата. Пространство сертификата ограничено 24 КиБ.
Чтобы установить сертификат корневого ЦС, вызовите CertStore_InstallRootCACertificate. Приложение предоставляет указатель на содержимое сертификата вместе с идентификатором, который он может использовать позже в качестве понятного имени для сертификата. Сертификат корневого ЦС требуется, если сеть включает взаимную проверку подлинности. Идентификаторы могут включать прописные буквы, строчные буквы, цифры от 0 до 9, точку (.), дефис (-) и символ подчеркивания (_). Максимальная длина идентификатора составляет 16 символов.
Чтобы установить сертификат клиента, вызовите CertStore_InstallClientCertificate. Как и в случае с сертификатом корневого ЦС, приложение предоставляет указатель на содержимое сертификата вместе с идентификатором, который он может использовать позже в качестве понятного имени для сертификата. Приложение также должно предоставить закрытый ключ и, если ключ зашифрован, пароль шифрования.
Чтобы обновить сертификат, приложение может использовать функцию CertStore_MoveCertificate . Эта функция перемещает один сертификат в другой путем перезаписи содержимого существующего целевого сертификата содержимым исходного сертификата. Оба сертификата уже должны быть установлены в хранилище сертификатов. Жизненный цикл и продление сертификата описывают стратегии обновления сертификатов, избегая простоя сети.
Настройка и настройка сети EAP-TLS
В примере Wifi_HighLevelApp показано, как создать, настроить и включить сеть EAP-TLS. В примере предполагается, что сертификаты уже находятся в хранилище сертификатов, как описано в разделе Установка сертификатов.
Чтобы настроить и настроить сеть, приложение должно выполнить следующие основные действия:
Добавьте сеть, вызвав WifiConfig_AddNetwork. Эта функция просто создает сеть; он не настраивает никаких характеристик для сети.
Задайте тип безопасности для сети, вызвав WifiConfig_SetSecurityType. Для сети EAP-TLS тип безопасности должен иметь значение
WifiConfig_Security_Wpa2_EAP_TLS
.Задайте SSID для сети, вызвав WifiConfig_SetSSID. Если SSID еще не известен, приложение может проверить его. Если сетевая среда, скорее всего, будет шумной или SSID не может быть широковещательным, приложение должно включить целевую проверку, вызвав WifiConfig_SetTargetedScanEnabled. Затем он может вызвать WifiConfig_TriggerScanAndGetScannedNetworkCount для проверки всех сетей и WifiConfig_GetScannedNetworks , чтобы получить результаты сканирования. WifiConfig_GetScannedNetworks возвращает массив структур, содержащих сведения о каждой сети. Приложение может выполнить поиск в результатах по сети с типом
WifiConfig_Security_Wpa2_EAP_TLS
безопасности, а затем получить его SSID.Задайте имя конфигурации для сети, вызвав WifiConfig_SetConfigName. Имя конфигурации — это понятное имя, которое приложение может использовать для идентификации этой конфигурации сети.
Задайте имя сертификата корневого ЦС для сервера RADIUS, вызвав WifiConfig_SetRootCACertStoreIdentifier, если сеть требует проверки подлинности сервера. Сертификат корневого ЦС уже должен присутствовать на устройстве.
Задайте имя хранилища сертификатов клиента, вызвав WifiConfig_SetClientCertStoreIdentifier. Сертификат клиента должен уже присутствовать на устройстве.
Задайте удостоверение клиента, вызвав WifiConfig_SetClientIdentity. Удостоверение клиента — это понятное имя, которое идентифицирует клиентское устройство.
Включите сеть, вызвав WifiConfig_SetNetworkEnabled.
Сохраните конфигурацию сети, вызвав WifiConfig_PersistConfig. Эта функция сохраняет конфигурацию сети на устройстве, чтобы она сохранялась при перезагрузке.
Изменение свойств сети EAP-TLS
Приложение может изменить свойства сети, вызвав те же функции, которые использовались для их первоначальной настройки, как указано в разделе Настройка и настройка сети EAP-TLS.
После изменения свойств приложение должно не только вызывать WifiConfig_PersistConfig для сохранения конфигурации, но и вызывать WifiConfig_ReloadConfig для немедленного обновления сети. Это особенно важно, когда приложение обновляет сертификат.
Удаление сети EAP-TLS
Приложение может удалить сеть, вызвав WifiConfig_ForgetNetworkById или WifiConfig_ForgetAllNetworks.
WifiConfig_ForgetNetworkById отключает сеть, если она подключена, и удаляет ее с устройства. Однако конфигурация Wi-Fi не обновляется, поэтому изменение не сохраняется при перезагрузке. Приложение должно вызвать WifiConfig_PersistConfig , чтобы сделать удаление постоянным.
WifiConfig_ForgetAllNetworks отключает подключенную сеть и удаляет все сети с устройства. Это изменение сохраняется при перезагрузке.
Образцы
- Высокоуровневое приложение "Сертификаты " — демонстрирует использование сертификатов и управление ими в высокоуровневом приложении Azure Sphere.
- Wifi_HighLevelApp. Демонстрируется подключение к сети Wi-Fi и проверка состояние сети на устройстве MT3620.
Примечание
Ниже приведен пример из коллекции Azure Sphere, которая представляет собой коллекцию неуправляемых примеров программного обеспечения и оборудования от корпорации Майкрософт. Дополнительные сведения см. в статье Коллекция Azure Sphere.
- Решение EAP-TLS с Azure Sphere . Демонстрирует, как подключить устройства Azure Sphere к сетям EAP-TLS.