Ciclo di vita del certificato e rinnovo
Le coppie di chiavi del certificato client e i certificati CA scadono regolarmente. L'infrastruttura di rete e i dispositivi devono essere in grado di gestire la scadenza del certificato e presentare un nuovo certificato senza perdere la connettività. I certificati CA radice, utilizzati nell'autenticazione server RADIUS, e i certificati client, utilizzati nell'autenticazione del dispositivo, richiedono approcci diversi per l'aggiornamento.
Attenzione
Poiché gli ID certificato sono a livello di sistema, un comando a sfera az o una chiamata funzione che aggiunge un nuovo certificato può sovrascrivere un certificato aggiunto da una chiamata di comando o funzione precedente, causando potenzialmente errori di connessione di rete. È consigliabile sviluppare procedure di aggiornamento dei certificati chiare e scegliere con attenzione gli ID certificato.
Per altre informazioni su come Azure Sphere usa gli ID certificato, vedere ID certificato .
Aggiornare un certificato CA radice
Un certificato CA è la CA radice del certificato di autenticazione sul server RADIUS. Se il certificato ca scade o la PKI per il server cambia, ad esempio se il server acquista una nuova CA radice da un'altra autorità di certificazione, i dispositivi Azure Sphere non possono più autenticare il server di autenticazione RADIUS. Tuttavia, i dispositivi devono continuare a funzionare.
Su una tipica rete wireless, non è possibile eseguire una cutover "knife-edge"; ovvero, non è possibile aggiornare tutti i dispositivi Azure Sphere nel momento esatto in cui la CA radice diventa non valida. I dispositivi potrebbero essere offline al momento critico o l'accuratezza del controllo del tempo può variare in base alle installazioni. L'applicazione di livello elevato deve essere in grado di ottenere il nuovo certificato CA radice prima della scadenza o delle modifiche correnti, in modo che il nuovo certificato sia pronto per l'uso quando necessario.
L'approccio consigliato consiste nel creare e abilitare una seconda rete con la stessa configurazione della rete esistente, ma che usa il nuovo certificato CA radice. Quando il certificato CA radice esistente non riesce nella rete originale, il sistema operativo tenterà automaticamente di connettersi alla seconda rete. L'applicazione può quindi sostituire il certificato nella rete originale con la nuova CA radice ed eliminare la seconda rete. Il dispositivo può quindi connettersi usando la rete originale, che ora include la nuova CA radice. La figura seguente riepiloga questo approccio.
Un'applicazione di livello elevato deve seguire questi passaggi per gestire facilmente un aggiornamento del certificato CA radice:
Nell'ambito del normale funzionamento, l'applicazione configura Rete1 di tipo
WifiConfig_Security_Wpa2_EAP_TLS
. Questa rete è collegata al certificato client per il dispositivo e alla CA1 radice, che è la CA radice originale per il server RADIUS.Circa 90 giorni prima della scadenza di RootCA, il dispositivo riceve una notifica da cloud a dispositivo che indica che presto sarà richiesto un nuovo certificato CA radice per il server RADIUS. La notifica può essere attivata da un amministratore di rete o da un altro operatore. i possibili meccanismi di notifica includono un messaggio da cloud a dispositivo hub IoT di Azure o Azure IoT Central.
L'amministratore di rete è responsabile dell'aggiornamento del certificato sul server RADIUS e dell'aggiornamento appropriato dei dispositivi Azure Sphere.
L'app acquisisce una nuova CA radice e chiama CertStore_InstallRootCACertificate per salvarla come CA2 radice.
L'app crea una nuova rete, Network2, chiamando WifiConfig_AddDuplicateNetwork per duplicare la configurazione Network1. Collega quindi la CA2 radice alla rete 2 e abilita Rete2. Se Network2 è abilitato nel dispositivo e può connettersi a Internet, il dispositivo lo userà se Rete1 non è disponibile.
L'app esegue sondaggi giornalieri chiamando WifiConfig_GetConnectedNetworkId per determinare a quale rete è connesso il dispositivo.
Se il controllo giornaliero della rete connessa non riesce, l'errore potrebbe essere causato da un problema di certificato sul lato server o dispositivo o da un altro problema. Per assistenza , vedi Risoluzione dei problemi di rete .
Se il dispositivo è connesso a Rete1, significa che il certificato non è ancora scaduto e tutto funziona correttamente. L'app ripete questo passaggio finché il dispositivo non si connette a Rete2.
Se il dispositivo è connesso a Rete2, significa che il vecchio certificato è scaduto, l'infrastruttura PKI aggiornata è configurata nel server RADIUS e il dispositivo è in grado di autenticare il server utilizzando la CA2 radice.
Quando il dispositivo funziona correttamente con Rete2, l'app completa le modifiche alla configurazione di rete:
- Rinomina la CA2 radice in CA1 radice chiamando CertStore_MoveCertificate. Questa funzione sovrascrive la ca1 radice scaduta con il contenuto della CA2 radice.
- Ricarica la configurazione Network1 chiamando WifiConfig_ReloadConfig. La configurazione Rete1 ora corrisponde alla rete corrente.
- Elimina la configurazione Network2 chiamando WifiConfig_ForgetNetworkById.
Aggiornare un certificato client
Il certificato client è costituito dalla coppia di chiavi pubblica e privata usata per autenticare il dispositivo Azure Sphere. Come il certificato CA radice, il certificato client scadrà di tanto in tanto e il dispositivo deve essere in grado di presentare un nuovo certificato. L'applicazione di alto livello è responsabile di ottenere il nuovo certificato prima della scadenza del certificato esistente. Un'app può ottenere la data e l'ora di scadenza di un certificato chiamando CertStore_GetCertificateNotAfter.
La figura seguente riepiloga questa procedura. Questo criterio consente al codice di aggiornamento del certificato di usare ID certificati costanti, ad esempio ClientCert1 e ClientCert2, invece di creare un nome univoco per ogni nuovo certificato. Inoltre, non richiede scambi di rete o pulizia dei certificati client.
Un'applicazione di alto livello deve seguire questi passaggi per gestire facilmente un aggiornamento del certificato client:
Nell'ambito del normale funzionamento, l'applicazione configura Rete1 di tipo
WifiConfig_Security_Wpa2_EAP_TLS
. Questa rete è collegata al certificato client per il dispositivo (ClientCert1) e alla CA radice per il server RADIUS. Prima di avviare la procedura di aggiornamento, l'app verifica che il dispositivo sia connesso a Rete1 chiamando WifiConfig_GetNetworkIdByConfigName e WifiConfig_GetConnectedNetworkId. Se gli ID di rete corrispondono, l'app può essere certa che è connessa alla rete prevista.L'app chiama CertStore_GetCertificateNotAfter a intervalli regolari per determinare quando scadrà il certificato client. In alternativa, l'applicazione potrebbe archiviare la data di scadenza in memoria mutable; tuttavia, dovrebbe comunque controllare la data di scadenza ogni giorno e dopo ogni riavvio.
L'app confronta la data e l'ora di scadenza con la data e l'ora correnti. Se il certificato scade entro un periodo di soglia predeterminato, l'app ottiene un nuovo certificato. La durata del periodo di soglia è una scelta. Come procedura consigliata, è consigliabile ottenere un nuovo certificato con almeno quattro settimane di anticipo rispetto alla scadenza nel caso in cui il dispositivo sia offline per un lungo periodo di tempo o si verifichino ripetuti problemi di rete o del server. Più tempo si verifica prima, più tempo è necessario per risolvere eventuali problemi.
L'app ottiene un nuovo certificato dall'autorità di certificazione appropriata. La scelta di un autorità di certificazione è responsabilità dell'amministratore di rete locale.
L'app salva il nuovo certificato come ClientCert2 chiamando CertStore_InstallClientCertificate e lo aggiunge alla configurazione di Wi-Fi Network1 chiamando WifiConfig_SetClientCertStoreIdentifier.
L'app ricarica la configurazione Wi-Fi chiamando WifiConfig_ReloadConfig. Questo passaggio rende ClientCert2 disponibile per il dispositivo per l'uso nelle connessioni di rete.
Verifica se la connessione di rete è riuscita.
Se la connessione ha esito positivo, ClientCert2 è ora valido.
Rinominare ClientCert2 in ClientCert1 chiamando CertStore_MoveCertificate.
Disabilitare Rete1 chiamando WifiConfig_SetNetworkEnabled per impostare lo stato Abilitato della rete su false e quindi riattivare Rete1 chiamando WifiConfig_SetNetworkEnabled impostare lo stato
true
Abilitato su . Disabilitando e riabilitando la configurazione, il contenuto del certificato rinominato sarà disponibile per l'applicazione.
Se non si riesce a connettersi, ClientCert2 non è ancora valido o si è verificato un altro errore.
- Se il certificato non è ancora valido, continuare con il passaggio 7 per ripristinare lo stato originale della configurazione di rete.
- Se si è verificato un altro errore, vedi Risoluzione dei problemi di rete per assistenza e riprovare la connessione.
Indipendentemente dal fatto che la connessione di rete sia riuscita, ricaricare la configurazione Wi-Fi chiamando WifiConfig_ReloadConfig. Se la connessione è riuscita, la configurazione ricaricata userà il nuovo ClientCert1, sostituito da ClientCert2. Se la connessione non riesce, la configurazione ricaricata userà ClientCert1.