다음을 통해 공유


앱에서 EAP-TLS 네트워크 설정

상위 수준 애플리케이션에서 또는 명령을 사용하여 az sphere 수동으로 EAP-TLS를 구성할 수 있습니다. 네트워크를 구성하고 연결하기 위해 애플리케이션은 CertstoreWifiConfig API 를 사용합니다.

요구 사항

EAP-TLS 네트워크를 구성하려면 상위 수준 앱에 적절한 헤더 파일을 포함하고, 애플리케이션 매니페스트에 필요한 기능을 사용하도록 설정하고, 인증에 필요한 인증서에 액세스할 수 있어야 합니다.

헤더 파일

앱에 다음 헤더가 포함되어야 합니다.

#include <applibs/wificonfig.h>

애플리케이션이 인증서를 관리하기 위해 CertStore API를 호출하는 경우 CertStore 헤더도 포함해야 합니다. 이 헤더는 인증서 정보를 검색하는 WifiConfig_GetRootCACertStoreIdentifier 같은 WifiConfig 함수를 사용할 필요가 없습니다.

#include <applibs/certstore.h>

애플리케이션 매니페스트

애플리케이션 매니페스트는 EnterpriseWiFiConfig 기능을 사용하도록 설정하여 EAP-TLS 네트워크를 설정해야 합니다. 또한 EAP-TLS 기능을 관리하지 않는 WifiConfig_* 함수를 사용하려면 WifiConfig 기능이 있어야 합니다. 마지막으로 앱이 인증서도 관리하는 경우 CertStore 기능을 사용하도록 설정해야 합니다.

애플리케이션에 필요하지 않은 기능을 사용하도록 설정하지 마세요. 이 경우 보안 위험이 발생합니다. 인증서가 수동으로 업데이트되는 경우 CertStore를 지정하지 마세요. 애플리케이션이 디바이스에 인증서를 저장하고 관리할 책임이 있는 경우에만 이 기능을 사용합니다.

다음 예제에서는 app_manifest.json 파일에서 세 가지 기능을 모두 설정하는 방법을 보여줍니다.

"Capabilities": {
        "WifiConfig" : true,
        "EnterpriseWiFiConfig" : true,
        "CertStore" : true
    }

인증서

디바이스에 대한 클라이언트 인증서는 디바이스에서 사용할 수 있어야 합니다. 또한 EAP-TLS 네트워크가 상호 인증을 위해 구성된 경우 네트워크의 RADIUS 서버에 대한 루트 CA 인증서도 디바이스에 설치해야 합니다. 두 인증서 모두 .pem 형식(PKCS1 또는 PKCS8)이어야 합니다. 인증서 및 인증서를 가져올 위치에 대한 자세한 내용은 EAP-TLS 인증서 획득 및 배포 를 참조하세요.

인증서 설치

앱이 EAP-TLS 네트워크를 설정하려면 먼저 인증에 사용할 루트 CA 및 클라이언트 인증서에 액세스할 수 있어야 합니다. EAP-TLS 네트워크에 대한 인증서 획득 및 배포는 인증서를 획득하고 PEM 파일로 디바이스에 로드하기 위한 전략을 설명합니다. 인증서 획득 및 배포는 사용자의 책임입니다. 자세한 내용은 네트워크 관리자와 검사.

인증서가 디바이스에 있으면 애플리케이션에서 사용할 수 있도록 인증서를 설치할 수 있습니다. 인증서 샘플은 설치 방법을 보여 줍니다. 기본 단계는 다음과 같습니다.

  • 인증서 저장소에 충분한 공간이 있는지 확인합니다. 인증서 저장소 공간이 제한되어 있으므로 앱은 인증서를 설치하기 전에 CertStore_GetAvailableSpace 호출해야 합니다. 충분한 공간을 사용할 수 없는 경우 앱은 기존 인증서를 삭제하여 새 인증서를 위한 공간을 확보해야 합니다. 인증서 공간은 24KiB로 제한됩니다.

  • 루트 CA 인증서를 설치하려면 CertStore_InstallRootCACertificate 호출합니다. 앱은 나중에 인증서의 식별 이름으로 사용할 수 있는 식별자와 함께 인증서 콘텐츠에 대한 포인터를 제공합니다. 네트워크에서 상호 인증을 사용하도록 설정하는 경우 루트 CA 인증서가 필요합니다. 식별자에는 대문자, 소문자, 숫자 0-9, 마침표(.), 하이픈(-) 및 밑줄(_)이 포함될 수 있습니다. 식별자의 최대 길이는 16자입니다.

  • 클라이언트 인증서를 설치하려면 CertStore_InstallClientCertificate 호출합니다. 루트 CA 인증서와 마찬가지로 앱은 나중에 인증서의 식별자로 사용할 수 있는 식별자와 함께 인증서 콘텐츠에 대한 포인터를 제공합니다. 또한 앱은 프라이빗 키와 키가 암호화된 경우 암호화 암호를 제공해야 합니다.

인증서를 업데이트하기 위해 앱은 CertStore_MoveCertificate 함수를 사용할 수 있습니다. 이 함수는 원본 인증서의 내용으로 기존 대상 인증서의 내용을 덮어써서 한 인증서를 다른 인증서로 이동합니다. 두 인증서 모두 인증서 저장소에 이미 설치되어 있어야 합니다. 인증서 수명 주기 및 갱신 은 네트워크 가동 중지 시간을 방지하면서 인증서를 업데이트하기 위한 전략을 간략하게 설명합니다.

EAP-TLS 네트워크 구성 및 설정

Wifi_HighLevelApp 샘플에서는 EAP-TLS 네트워크를 만들고 구성하고 사용하도록 설정하는 방법을 보여 줍니다. 이 샘플에서는 인증서 설치에 설명된 대로 인증서가 인증서 저장소에 이미 있다고 가정 합니다.

네트워크를 구성하고 설정하려면 앱이 다음 기본 단계를 따라야 합니다.

  • WifiConfig_AddNetwork 호출하여 네트워크를 추가합니다. 이 함수는 단순히 네트워크를 만듭니다. 네트워크에 대한 특성을 구성하지 않습니다.

  • WifiConfig_SetSecurityType 호출하여 네트워크의 보안 유형을 설정합니다. EAP-TLS 네트워크의 경우 보안 유형은 이어야 WifiConfig_Security_Wpa2_EAP_TLS합니다.

  • WifiConfig_SetSSID 호출하여 네트워크에 대한 SSID를 설정합니다. SSID가 아직 알려지지 않은 경우 앱에서 검색할 수 있습니다. 네트워크 환경이 시끄럽거나 SSID가 브로드캐스트되지 않을 수 있는 경우 앱은 WifiConfig_SetTargetedScanEnabled 호출하여 대상 검색을 사용하도록 설정해야 합니다. 그런 다음 WifiConfig_TriggerScanAndGetScannedNetworkCount 호출하여 모든 네트워크를 검색하고 WifiConfig_GetScannedNetworks 검사 결과를 가져올 수 있습니다. WifiConfig_GetScannedNetworks 각 네트워크에 대한 세부 정보가 포함된 구조체의 배열을 반환합니다. 애플리케이션은 보안 유형이 있는 네트워크에 WifiConfig_Security_Wpa2_EAP_TLS 대한 결과를 검색한 다음 SSID를 검색할 수 있습니다.

  • WifiConfig_SetConfigName 호출하여 네트워크의 구성 이름을 설정합니다. 구성 이름은 앱이 이 네트워크 구성을 식별하는 데 사용할 수 있는 친숙한 이름입니다.

  • 네트워크에 서버 인증이 필요한 경우 WifiConfig_SetRootCACertStoreIdentifier 호출하여 RADIUS 서버에 대한 루트 CA 인증서의 이름을 설정합니다. 루트 CA 인증서는 디바이스에 이미 있어야 합니다.

  • WifiConfig_SetClientCertStoreIdentifier 호출하여 클라이언트 인증서 저장소의 이름을 설정합니다. 클라이언트 인증서는 디바이스에 이미 있어야 합니다.

  • WifiConfig_SetClientIdentity 호출하여 클라이언트 ID를 설정합니다. 클라이언트 ID는 클라이언트 디바이스를 식별하는 친숙한 이름입니다.

  • 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 - MT3620 디바이스에서 Wi-Fi 네트워크에 연결하고 네트워크 상태 검사 방법을 보여 줍니다.

참고

다음 샘플은 Microsoft의 매핑되지 않은 소프트웨어 및 하드웨어 샘플 컬렉션인 Azure Sphere 갤러리에서 가져옵니다. 자세한 내용은 Azure Sphere 갤러리를 참조하세요.