Configurare la rete EAP-TLS in un'app
È possibile configurare un EAP-TLS in un'applicazione di alto livello oppure manualmente usando az sphere
i comandi. Per configurare e connettersi alla rete, un'applicazione utilizza le API Certstore e WifiConfig .
Requisiti
Per configurare una rete EAP-TLS, l'app di alto livello deve includere i file di intestazione appropriati, abilitare le funzionalità necessarie nel manifesto dell'applicazione e avere accesso ai certificati necessari per l'autenticazione.
File di intestazione
L'app deve includere l'intestazione seguente:
#include <applibs/wificonfig.h>
Se l'applicazione chiama l'API CertStore per gestire i certificati, deve includere anche l'intestazione CertStore. Questa intestazione non è necessaria per utilizzare le funzioni WifiConfig , ad esempio WifiConfig_GetRootCACertStoreIdentifier che recuperano le informazioni sul certificato.
#include <applibs/certstore.h>
Manifesto dell'applicazione
Il manifesto dell'applicazione deve abilitare la funzionalità EnterpriseWiFiConfig per configurare una rete EAP-TLS. Per usare le funzioni di WifiConfig_* che non gestiscono le funzionalità EAP-TLS, è inoltre necessario disporre della funzionalità WifiConfig. Infine, se l'app gestisce anche i certificati, deve abilitare la funzionalità CertStore.
Non abilitare le funzionalità non richieste dall'applicazione; comporta un rischio per la sicurezza. Se i certificati verranno aggiornati manualmente, non specificare CertStore. Usare questa funzionalità solo se l'applicazione è responsabile dell'archiviazione e della gestione dei certificati nel dispositivo.
L'esempio seguente mostra come impostare tutte e tre le funzionalità nel file app_manifest.json:
"Capabilities": {
"WifiConfig" : true,
"EnterpriseWiFiConfig" : true,
"CertStore" : true
}
Certificati
Il certificato client per il dispositivo deve essere disponibile nel dispositivo. Inoltre, se la rete EAP-TLS è configurata per l'autenticazione reciproca, nel dispositivo deve essere installato anche il certificato CA radice per il server RADIUS della rete. Entrambi i certificati devono essere in formato .pem, PKCS1 o PKCS8. Per informazioni sui certificati e su dove ottenerli, vedere Acquisizione e distribuzione di certificati EAP-TLS .
Installare certificati
Prima che l'app possa configurare una rete EAP-TLS, deve avere accesso alla CA radice e ai certificati client da usare per l'autenticazione. L'acquisizione e la distribuzione di certificati per le reti EAP-TLS descrive le strategie per l'acquisizione e il caricamento di certificati in un dispositivo come file PEM. L'acquisizione e la distribuzione di certificati è responsabilità dell'utente; contatta l'amministratore di rete per i dettagli.
Dopo che i certificati sono sul dispositivo, un'applicazione può installarli per l'uso. L'esempio Certificati mostra come installarli. Ecco i passaggi di base:
Verificare che lo spazio nell'archivio certificati sia sufficiente. Lo spazio nell'archivio certificati è limitato, quindi l'app deve chiamare CertStore_GetAvailableSpace prima di installare un certificato. Se lo spazio disponibile non è sufficiente, l'app deve eliminare un certificato esistente per liberare spazio per quello nuovo. Lo spazio certificato è limitato a 24 KiB.
Per installare un certificato CA radice, chiamare CertStore_InstallRootCACertificate. L'app fornisce un puntatore al contenuto del certificato insieme a un identificatore che può essere usato in seguito come nome descrittivo per il certificato. Se la rete abilita l'autenticazione reciproca, è necessario un certificato CA radice. Gli identificatori possono includere lettere maiuscole, minuscole, cifre da 0 a 9, punto (.), trattino (-) e carattere di sottolineatura (_). La lunghezza massima di un identificatore è di 16 caratteri.
Per installare un certificato client, chiamare CertStore_InstallClientCertificate. Come per il certificato CA radice, l'app fornisce un puntatore al contenuto del certificato insieme a un identificatore che può essere usato in seguito come nome descrittivo per il certificato. L'app deve anche fornire la chiave privata e, se la chiave è crittografata, la password di crittografia.
Per aggiornare un certificato, l'app può usare la funzione CertStore_MoveCertificate . Questa funzione sposta un certificato in un altro sovrascrivendo il contenuto di un certificato di destinazione esistente con il contenuto del certificato di origine. Entrambi i certificati devono essere già installati nell'archivio certificati. Il ciclo di vita dei certificati e le strategie di struttura di rinnovo per l'aggiornamento dei certificati evitando tempi di inattività di rete.
Configurare e configurare una rete EAP-TLS
Nell'esempio Wifi_HighLevelApp viene illustrato come creare, configurare e abilitare una rete EAP-TLS. L'esempio presuppone che i certificati siano già presenti nell'archivio certificati, come descritto in Installare i certificati.
Per configurare e configurare la rete, un'app deve seguire questi passaggi di base:
Aggiungi una rete chiamando WifiConfig_AddNetwork. Questa funzione crea semplicemente una rete; non configura alcuna caratteristica per la rete.
Impostare il tipo di sicurezza per la rete chiamando WifiConfig_SetSecurityType. Per una rete EAP-TLS, il tipo di sicurezza deve essere
WifiConfig_Security_Wpa2_EAP_TLS
.Impostare l'SSID per la rete chiamando WifiConfig_SetSSID. Se l'SSID non è già noto, l'app può cercarlo. Se è probabile che l'ambiente di rete sia rumoroso o se l'SSID potrebbe non essere trasmesso, l'app deve abilitare l'analisi mirata chiamando WifiConfig_SetTargetedScanEnabled. Può quindi chiamare WifiConfig_TriggerScanAndGetScannedNetworkCount per cercare tutte le reti e WifiConfig_GetScannedNetworks per ottenere i risultati dell'analisi. WifiConfig_GetScannedNetworks restituisce una matrice di strutture che contengono dettagli su ogni rete. L'applicazione può cercare nei risultati una rete con il
WifiConfig_Security_Wpa2_EAP_TLS
tipo di sicurezza e quindi recuperare il suo SSID.Impostare il nome di configurazione per la rete chiamando WifiConfig_SetConfigName. Il nome della configurazione è un nome descrittivo che l'app può usare per identificare questa configurazione di rete.
Impostare il nome del certificato CA radice per il server RADIUS chiamando WifiConfig_SetRootCACertStoreIdentifier, se la rete richiede l'autenticazione del server. Il certificato CA radice deve essere già presente nel dispositivo.
Impostare il nome dell'archivio certificati client chiamando WifiConfig_SetClientCertStoreIdentifier. Il certificato client deve essere già presente nel dispositivo.
Impostare l'identità del client chiamando WifiConfig_SetClientIdentity. L'identità client è un nome descrittivo che identifica il dispositivo client.
Abilitare la rete chiamando WifiConfig_SetNetworkEnabled.
Salvare la configurazione di rete chiamando WifiConfig_PersistConfig. Questa funzione salva la configurazione di rete nel dispositivo in modo che persista durante un riavvio.
Modificare le proprietà di una rete EAP-TLS
L'app può modificare le proprietà della rete chiamando le stesse funzioni usate per impostarle originariamente, come indicato in Configurare e configurare una rete EAP-TLS.
Dopo aver modificato le proprietà, l'app non solo deve chiamare WifiConfig_PersistConfig per salvare la configurazione, ma deve anche chiamare WifiConfig_ReloadConfig per aggiornare immediatamente la rete. Ciò è particolarmente importante quando l'applicazione aggiorna un certificato.
Eliminare una rete EAP-TLS
Un'app può eliminare una rete chiamando WifiConfig_ForgetNetworkById o WifiConfig_ForgetAllNetworks.
WifiConfig_ForgetNetworkById disconnette la rete se è connessa e la rimuove dal dispositivo. Tuttavia, non aggiorna la configurazione Wi-Fi, quindi la modifica non viene mantenuta durante il riavvio. L'app deve chiamare WifiConfig_PersistConfig per rendere permanente la rimozione.
WifiConfig_ForgetAllNetworks disconnette la rete connessa e rimuove tutte le reti dal dispositivo. Questa modifica persiste nel riavvio.
Campioni
- App di alto livello Certificati - Mostra come usare e gestire i certificati in un'applicazione di alto livello Azure Sphere.
- Wifi_HighLevelApp : viene illustrato come connettersi a una rete Wi-Fi e controllare lo stato della rete in un dispositivo MT3620.
Nota
Il seguente esempio proviene dalla Raccolta sfere di Azure, che è una raccolta di campioni hardware e software non mantenuti di Microsoft. Per ulteriori informazioni, vedi Raccolta sfere di Azure.
- Soluzione EAP-TLS con Azure Sphere : viene illustrato come connettere i dispositivi Azure Sphere alle reti EAP-TLS.