次の方法で共有


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

重要

これは Azure Sphere (レガシ) のドキュメントです。 Azure Sphere (レガシ) は 2027 年 9 月 27 日に 再提供されておりユーザーは現時点で Azure Sphere (統合) に移行する必要があります。 TOC の上にある Version セレクターを使用して、Azure Sphere (統合) のドキュメントを表示します。

EAP-TLS は、高度なアプリケーションで、または azsphere コマンドを使用して手動で構成できます。 ネットワークを構成して接続するため、アプリケーションでは Certstore API と WifiConfig API が使用されます。

要件

EAP-TLS ネットワークを構成するには、高度なアプリに適切なヘッダー ファイルを含め、そのアプリケーション マニフェストで必要な機能を有効にし、認証に必要な証明書にアクセスできるようにする必要があります。

ヘッダー ファイル

アプリには次のヘッダーを含める必要があります。

#include <applibs/wificonfig.h>

アプリケーションで証明書を管理するために CertStore API を呼び出す場合は、CertStore ヘッダーも含める必要があります。 このヘッダーは、証明書情報を取得する WifiConfig_GetRootCACertStoreIdentifier などの WifiConfig 関数を使用するためには必要ありません。

#include <applibs/certstore.h>

アプリケーション マニフェスト

アプリケーション マニフェストでは、EAP-TLS ネットワークを設定するために EnterpriseWiFiConfig の機能を有効にする必要があります。 また、EAP-TLS 機能を管理しない WifiConfig_* 関数を使用するための WifiConfig 機能も必要です。 最後に、アプリで証明書も管理する場合は、CertStore 機能を有効にする必要があります。

アプリケーションで必要ない機能は有効にしないでください。これにより、セキュリティ上のリスクが生じます。 証明書を手動で更新する場合は、CertStore を指定しないでください。 この機能は、アプリケーションがデバイスに証明書を格納して管理する場合にのみ使用してください。

次の例は、app_manifest.json ファイルで 3 つすべての機能を設定する方法を示しています。

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

証明書

ご使用のデバイスのクライアント証明書がそのデバイスで使用可能である必要があります。 さらに、EAP-TLS ネットワークが相互認証用に構成されている場合は、ご使用のネットワークの RADIUS サーバーのルート CA 証明書もデバイスにインストールされている必要があります。 どちらの証明書も、.pem 形式で、PKCS1 または PKCS8 のいずれかである必要があります。 証明書の詳細と取得場所については、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 デバイスでネットワークの状態を確認する方法を示します。

Note

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