Share via


アプリで EAP-TLS ネットワークを設定する

EAP-TLS は、高度なアプリケーションで構成することも 、コマンドを使用して az sphere 手動で構成することもできます。 ネットワークを構成して接続するために、アプリケーションは Certstore API と WifiConfig 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 ファイルに 3 つすべての機能を設定する方法を示しています。

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

証明 書

デバイスのクライアント証明書は、デバイスで使用できる必要があります。 さらに、EAP-TLS ネットワークが相互認証用に構成されている場合は、ネットワークの RADIUS サーバーのルート CA 証明書もデバイスにインストールする必要があります。 どちらの証明書も、PKCS1 または PKCS8 のいずれかの .pem 形式である必要があります。 証明書とその取得場所については、「EAP-TLS 証明書の取得と展開」を参照してください。

証明書をインストールする

アプリで EAP-TLS ネットワークを設定するには、認証に使用するルート CA とクライアント証明書へのアクセス権が必要です。 EAP-TLS ネットワークの証明書を取得して展開 する方法は、証明書を取得し、PEM ファイルとしてデバイスに読み込む方法について説明します。 証明書の取得と展開はお客様の責任です。詳細については、ネットワーク管理者にチェックします。

証明書がデバイス上にあると、アプリケーションは証明書をインストールして使用できます。 証明書のサンプルは、それらをインストールする方法を示しています。 基本的な手順は次のとおりです。

  • 証明書ストアに十分な領域があることを確認します。 証明書ストアの領域は限られているため、アプリは証明書 のインストールを 試みる前にCertStore_GetAvailableSpaceを呼び出す必要があります。 十分な領域が利用できない場合、アプリは既存の証明書を削除して、新しい証明書の空き領域を確保する必要があります。 証明書の領域は 24 KiB に制限されています。

  • ルート 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 - Wi-Fi ネットワークに接続し、MT3620 デバイスでネットワークの状態をチェックする方法を示します。

メモ

次のサンプルは、Microsoft のメンテナンスされていないソフトウェアとハードウェアのサンプルのコレクションである Azure Sphere ギャラリーからのサンプルです。 詳細については、「 Azure Sphere ギャラリー」を参照してください。