Поделиться через


Настройка сети 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, которая представляет собой коллекцию неуправляемых примеров программного обеспечения и оборудования от корпорации Майкрософт. Дополнительные сведения см. в статье Коллекция Azure Sphere.