Einrichten eines EAP-TLS-Netzwerks in einer App

Sie können EAP-TLS in einer allgemeinen Anwendung oder manuell mithilfe von az sphere Befehlen konfigurieren. Zum Konfigurieren und Herstellen einer Verbindung mit dem Netzwerk verwendet eine Anwendung die Certstore - und WifiConfig-APIs .

Anforderungen

Zum Konfigurieren eines EAP-TLS-Netzwerks muss Ihre allgemeine App die entsprechenden Headerdateien enthalten, die erforderlichen Funktionen im Anwendungsmanifest aktivieren und Zugriff auf die Zertifikate haben, die für die Authentifizierung erforderlich sind.

Headerdateien

Ihre App muss den folgenden Header enthalten:

#include <applibs/wificonfig.h>

Wenn die Anwendung die CertStore-API aufruft, um Zertifikate zu verwalten, muss sie auch den CertStore-Header enthalten. Dieser Header ist nicht erforderlich, um die WifiConfig-Funktionen wie WifiConfig_GetRootCACertStoreIdentifier zum Abrufen von Zertifikatinformationen zu verwenden.

#include <applibs/certstore.h>

Anwendungsmanifest

Das Anwendungsmanifest muss die EnterpriseWiFiConfig-Funktion aktivieren, um ein EAP-TLS-Netzwerk einzurichten. Es muss auch über die WifiConfig-Funktion verfügen, um WifiConfig_*-Funktionen verwenden zu können, die keine EAP-TLS-Features verwalten. Wenn die App auch Zertifikate verwaltet, muss sie schließlich die CertStore-Funktion aktivieren.

Aktivieren Sie keine Funktionen, die die Anwendung nicht benötigt. Dies stellt ein Sicherheitsrisiko dar. Wenn die Zertifikate manuell aktualisiert werden, geben Sie CertStore nicht an. Verwenden Sie diese Funktion nur, wenn die Anwendung für das Speichern und Verwalten von Zertifikaten auf dem Gerät zuständig ist.

Das folgende Beispiel zeigt, wie Sie alle drei Funktionen in der Datei app_manifest.json festlegen:

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

Zertifikate

Das Clientzertifikat für Ihr Gerät muss auf dem Gerät verfügbar sein. Wenn das EAP-TLS-Netzwerk für die gegenseitige Authentifizierung konfiguriert ist, muss außerdem das Zertifikat der Stammzertifizierungsstelle für den RADIUS-Server Ihres Netzwerks auf dem Gerät installiert sein. Beide Zertifikate müssen im PEM-Format vorliegen, entweder PKCS1 oder PKCS8. Informationen zu den Zertifikaten und deren Beschaffung finden Sie unter EAP-TLS-Zertifikaterfassung und -bereitstellung .

Installieren von Zertifikaten

Bevor Ihre App ein EAP-TLS-Netzwerk einrichten kann, muss sie Zugriff auf die Stammzertifizierungsstelle und Clientzertifikate für die Authentifizierung haben. Unter Abrufen und Bereitstellen von Zertifikaten für EAP-TLS-Netzwerke werden Strategien zum Abrufen von Zertifikaten und zum Laden dieser Zertifikate auf einem Gerät als PEM-Dateien beschrieben. Der Erwerb und die Bereitstellung von Zertifikaten liegt in Ihrer Verantwortung; Wenden Sie sich an Ihren Netzwerkadministrator, um Weitere Informationen zu erhalten.

Nachdem sich die Zertifikate auf dem Gerät befinden, kann eine Anwendung sie zur Verwendung installieren. Im Beispiel zertifikate wird gezeigt, wie sie installiert werden. Im Folgenden sind die grundlegenden Schritte aufgeführt:

  • Stellen Sie sicher, dass genügend Speicherplatz im Zertifikatspeicher vorhanden ist. Der Zertifikatspeicherplatz ist begrenzt. Daher sollte die App CertStore_GetAvailableSpace aufrufen, bevor sie versucht, ein Zertifikat zu installieren. Wenn nicht genügend Speicherplatz verfügbar ist, sollte die App ein vorhandenes Zertifikat löschen, um Platz für das neue Zertifikat zu schaffen. Der Zertifikatspeicher ist auf 24 KiB beschränkt.

  • Rufen Sie CertStore_InstallRootCACertificate auf, um ein Zertifikat der Stammzertifizierungsstelle zu installieren. Die App stellt einen Zeiger auf den Zertifikatinhalt zusammen mit einem Bezeichner bereit, den sie später als Anzeigenamen für das Zertifikat verwenden kann. Ein Zertifikat der Stammzertifizierungsstelle ist erforderlich, wenn das Netzwerk die gegenseitige Authentifizierung ermöglicht. Bezeichner können Großbuchstaben, Kleinbuchstaben, die Ziffern 0-9, Punkt (.), Bindestrich (-) und Unterstriche (_) enthalten. Die maximale Länge eines Bezeichners beträgt 16 Zeichen.

  • Um ein Clientzertifikat zu installieren, rufen Sie CertStore_InstallClientCertificate auf. Wie beim Zertifikat der Stammzertifizierungsstelle stellt die App einen Zeiger auf den Zertifikatinhalt zusammen mit einem Bezeichner bereit, den sie später als Anzeigenamen für das Zertifikat verwenden kann. Die App muss auch den privaten Schlüssel und, wenn der Schlüssel verschlüsselt ist, das Verschlüsselungskennwort bereitstellen.

Zum Aktualisieren eines Zertifikats kann die App die funktion CertStore_MoveCertificate verwenden. Diese Funktion verschiebt ein Zertifikat in ein anderes, indem der Inhalt eines vorhandenen Zielzertifikats mit dem Inhalt des Quellzertifikats überschrieben wird. Beide Zertifikate müssen bereits im Zertifikatspeicher installiert sein. Der Lebenszyklus und die Erneuerung von Zertifikaten beschreibt Strategien zum Aktualisieren von Zertifikaten bei gleichzeitiger Vermeidung von Netzwerkausfallzeiten.

Konfigurieren und Einrichten eines EAP-TLS-Netzwerks

Das Wifi_HighLevelApp Beispiel zeigt, wie Sie ein EAP-TLS-Netzwerk erstellen, konfigurieren und aktivieren. Im Beispiel wird davon ausgegangen, dass sich die Zertifikate bereits im Zertifikatspeicher befinden, wie unter Installieren von Zertifikaten beschrieben.

Zum Konfigurieren und Einrichten des Netzwerks sollte eine App die folgenden grundlegenden Schritte ausführen:

  • Fügen Sie ein Netzwerk hinzu, indem Sie WifiConfig_AddNetwork aufrufen. Diese Funktion erstellt einfach ein Netzwerk; Es werden keine Merkmale für das Netzwerk konfiguriert.

  • Legen Sie den Sicherheitstyp für das Netzwerk fest, indem Sie WifiConfig_SetSecurityType aufrufen. Für ein EAP-TLS-Netzwerk muss der Sicherheitstyp sein WifiConfig_Security_Wpa2_EAP_TLS.

  • Legen Sie die SSID für das Netzwerk fest, indem Sie WifiConfig_SetSSID aufrufen. Wenn die SSID noch nicht bekannt ist, kann die App danach suchen. Wenn die Netzwerkumgebung wahrscheinlich laut ist oder wenn die SSID möglicherweise nicht übertragen wird, sollte die App die gezielte Überprüfung durch Aufrufen von WifiConfig_SetTargetedScanEnabled aktivieren. Anschließend kann WifiConfig_TriggerScanAndGetScannedNetworkCount aufgerufen werden, um nach allen Netzwerken zu suchen, und WifiConfig_GetScannedNetworks , um die Ergebnisse der Überprüfung zu erhalten. WifiConfig_GetScannedNetworks gibt ein Array von Strukturen zurück, die Details zu den einzelnen Netzwerken enthalten. Die Anwendung kann die Ergebnisse nach einem Netzwerk mit dem WifiConfig_Security_Wpa2_EAP_TLS Sicherheitstyp durchsuchen und dann seine SSID abrufen.

  • Legen Sie den Konfigurationsnamen für das Netzwerk fest, indem Sie WifiConfig_SetConfigName aufrufen. Der Konfigurationsname ist ein Anzeigename, den die App verwenden kann, um diese Netzwerkkonfiguration zu identifizieren.

  • Legen Sie den Namen des Zertifikats der Stammzertifizierungsstelle für den RADIUS-Server fest, indem Sie WifiConfig_SetRootCACertStoreIdentifier aufrufen, wenn das Netzwerk eine Serverauthentifizierung erfordert. Das Zertifikat der Stammzertifizierungsstelle muss bereits auf dem Gerät vorhanden sein.

  • Legen Sie den Namen des Clientzertifikatspeichers fest, indem Sie WifiConfig_SetClientCertStoreIdentifier aufrufen. Das Clientzertifikat muss bereits auf dem Gerät vorhanden sein.

  • Legen Sie die Clientidentität fest, indem Sie WifiConfig_SetClientIdentity aufrufen. Die Clientidentität ist ein Anzeigename, der das Clientgerät identifiziert.

  • Aktivieren Sie das Netzwerk, indem Sie WifiConfig_SetNetworkEnabled aufrufen.

  • Speichern Sie die Netzwerkkonfiguration, indem Sie WifiConfig_PersistConfig aufrufen. Diese Funktion speichert die Netzwerkkonfiguration auf dem Gerät, sodass sie bei einem Neustart beibehalten wird.

Ändern der Eigenschaften eines EAP-TLS-Netzwerks

Die App kann die Eigenschaften des Netzwerks ändern, indem sie die gleichen Funktionen aufruft, mit denen sie ursprünglich festgelegt wurden, wie unter Konfigurieren und Einrichten eines EAP-TLS-Netzwerks aufgeführt.

Nach dem Ändern der Eigenschaften muss die App nicht nur WifiConfig_PersistConfig aufrufen, um die Konfiguration zu speichern, sondern auch WifiConfig_ReloadConfig aufrufen, um das Netzwerk sofort zu aktualisieren. Dies ist besonders wichtig, wenn die Anwendung ein Zertifikat aktualisiert.

Löschen eines EAP-TLS-Netzwerks

Eine App kann ein Netzwerk löschen, indem sie entweder WifiConfig_ForgetNetworkById oder WifiConfig_ForgetAllNetworks aufruft.

WifiConfig_ForgetNetworkById trennt das Netzwerk, wenn es verbunden ist, und entfernt es vom Gerät. Die Wi-Fi-Konfiguration wird jedoch nicht aktualisiert, sodass die Änderung nicht während des Neustarts beibehalten wird. Die App muss WifiConfig_PersistConfig aufrufen, um die Entfernung dauerhaft zu machen.

WifiConfig_ForgetAllNetworks trennt das verbundene Netzwerk und entfernt alle Netzwerke vom Gerät. Diese Änderung bleibt während des Neustarts bestehen.

Proben

  • Allgemeine Zertifikate-App : Veranschaulicht die Verwendung und Verwaltung von Zertifikaten in einer allgemeinen Azure Sphere-Anwendung.
  • Wifi_HighLevelApp: Zeigt, wie Sie eine Verbindung mit einem Wi-Fi Netzwerk herstellen und die status des Netzwerks auf einem MT3620-Gerät überprüfen.

Hinweis

Das folgende Beispiel stammt aus dem Azure Sphere-Katalog, bei dem es sich um eine Sammlung von nicht verwalteten Software- und Hardwarebeispielen von Microsoft handelt. Weitere Informationen finden Sie unter Azure Sphere-Katalog.