Ciclo de vida e renovação do certificado
Importante
Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (Integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).
Os pares de chaves de certificado de cliente e certificados de CA expiram regularmente. Sua infraestrutura de rede e dispositivos devem ser capazes de lidar com a expiração do certificado e apresentar um novo certificado sem perder a conectividade. Os certificados de autoridade de certificação raiz, que são usados na autenticação do servidor RADIUS, e os certificados de cliente, que são usados na autenticação de dispositivo, exigem abordagens diferentes para atualização.
Atenção
Como os IDs de certificado abrangem todo o sistema, um comando azsphere ou uma chamada de função que adiciona um novo certificado pode substituir um certificado que foi adicionado por um comando ou chamada de função anterior, potencialmente causando falhas de conexão de rede. É altamente recomendável que você desenvolva procedimentos claros de atualização de certificado e escolha cuidadosamente os IDs de certificado.
Consulte IDs de certificado para obter mais informações sobre como o Azure Sphere usa IDs de certificado.
Atualizar um certificado de autoridade de certificação raiz
Um certificado de autoridade de certificação é a autoridade de certificação raiz do certificado de autenticação no servidor RADIUS. Se o certificado da autoridade de certificação expirar ou a PKI do servidor for alterada — por exemplo, se o servidor adquirir uma nova autoridade de certificação raiz de uma autoridade de certificação diferente — os dispositivos do Azure Sphere não poderão mais autenticar o servidor de autenticação RADIUS. No entanto, os dispositivos precisam continuar funcionando.
Em uma rede sem fio típica, não é possível realizar um corte de "ponta de faca"; ou seja, você não pode atualizar todos os dispositivos do Azure Sphere no exato instante em que a autoridade de certificação raiz se torna inválida. Os dispositivos podem estar offline no momento crítico ou a precisão da cronometragem pode variar entre as instalações. Seu aplicativo de alto nível deve ser capaz de obter o novo certificado de autoridade de certificação raiz antes que o atual expire ou seja alterado, para que o novo certificado esteja pronto para uso quando necessário.
A abordagem recomendada é criar e habilitar uma segunda rede que tenha a mesma configuração da rede existente, mas use o novo certificado de autoridade de certificação raiz. Quando o certificado de autoridade de certificação raiz existente falhar na rede original, o sistema operacional tentará se conectar automaticamente à segunda rede. O aplicativo pode então substituir o certificado na rede original pela nova autoridade de certificação raiz e excluir a segunda rede. O dispositivo pode então se conectar usando a rede original, que agora tem a nova CA raiz. A figura a seguir resume essa abordagem.
Um aplicativo de alto nível deve seguir estas etapas para lidar perfeitamente com uma atualização para o certificado de autoridade de certificação raiz:
Como parte da operação normal, o aplicativo configura Network1 do tipo
WifiConfig_Security_Wpa2_EAP_TLS
. Essa rede está vinculada ao certificado do cliente para o dispositivo e à CA1 raiz, que é a autoridade de certificação raiz original para o servidor RADIUS.Cerca de 90 dias antes do RootCA expirar, o dispositivo recebe uma notificação de nuvem para dispositivo de que um novo certificado de CA raiz para o servidor RADIUS será necessário em breve. A notificação pode ser acionada por um administrador de rede ou outro operador; possíveis mecanismos de notificação incluem uma mensagem de nuvem para dispositivo do Hub IoT do Azure ou do Azure IoT Central.
O administrador de rede é responsável por atualizar o certificado no servidor RADIUS e por garantir que os dispositivos do Azure Sphere sejam atualizados adequadamente.
O aplicativo adquire uma nova CA raiz e chama CertStore_InstallRootCACertificate para salvá-la como CA2 raiz.
O aplicativo cria uma nova rede, Network2, chamando WifiConfig_AddDuplicateNetwork para duplicar a configuração Network1. Em seguida, ele vincula Root CA2 à Rede 2 e habilita Network2. Se Network2 estiver habilitado no dispositivo e puder se conectar à Internet, o dispositivo irá usá-lo se Network1 não estiver disponível.
O aplicativo pesquisa diariamente chamando WifiConfig_GetConnectedNetworkId para determinar a qual rede o dispositivo está conectado.
Se a verificação diária da rede conectada falhar, o erro pode resultar de um problema de certificado no servidor ou no dispositivo, ou de algum outro problema. Consulte Solução de problemas de rede para obter ajuda.
Se o dispositivo estiver conectado à Network1, isso significa que o certificado ainda não expirou e tudo está funcionando corretamente. O aplicativo repete essa etapa até que o dispositivo se conecte à Network2.
Se o dispositivo estiver conectado à Network2, isso significa que o certificado antigo expirou, a PKI atualizada está configurada no servidor RADIUS e o dispositivo é capaz de autenticar o servidor usando o CA2 raiz.
Quando o dispositivo está funcionando corretamente com Network2, o aplicativo conclui as alterações na configuração de rede:
- Renomeia Root CA2 para Root CA1 chamando CertStore_MoveCertificate. Esta função substitui a CA1 raiz expirada com o conteúdo da CA2 raiz.
- Recarrega a configuração Network1 chamando WifiConfig_ReloadConfig. A configuração Network1 agora corresponde à rede atual.
- Exclui a configuração Network2 chamando WifiConfig_ForgetNetworkById.
Atualizar um certificado de cliente
O certificado de cliente compreende o par de chaves pública e privada que são usadas para autenticar o dispositivo Azure Sphere. Como o certificado de autoridade de certificação raiz, o certificado de cliente expirará de tempos em tempos, e o dispositivo deve ser capaz de apresentar um novo certificado. Seu aplicativo de alto nível é responsável por obter o novo certificado antes que o certificado existente expire. Um aplicativo pode obter a data e a hora em que um certificado expira chamando CertStore_GetCertificateNotAfter.
A figura a seguir resume esse procedimento. Esse padrão permite que o código de atualização do certificado use IDs de certificado constantes, como ClientCert1 e ClientCert2, em vez de criar um nome exclusivo para cada novo certificado. Além disso, não requer trocas de rede ou limpeza de certificado de cliente.
Um aplicativo de alto nível deve seguir estas etapas para lidar perfeitamente com uma atualização para o certificado do cliente:
Como parte da operação normal, o aplicativo configura Network1 do tipo
WifiConfig_Security_Wpa2_EAP_TLS
. Essa rede está vinculada ao certificado do cliente para o dispositivo (ClientCert1) e à autoridade de certificação raiz para o servidor RADIUS. Antes de iniciar o procedimento de atualização, o aplicativo verifica se o dispositivo está conectado à Network1 chamando WifiConfig_GetNetworkIdByConfigName e WifiConfig_GetConnectedNetworkId. Se os IDs de rede corresponderem, o aplicativo pode ter certeza de que está conectado à rede pretendida.O aplicativo chama CertStore_GetCertificateNotAfter em intervalos regulares para determinar quando o certificado do cliente expirará. Alternativamente, o aplicativo pode armazenar a data de validade em armazenamento mutável; no entanto, ele ainda deve verificar a data de validade diariamente e após cada reinicialização.
O aplicativo compara a data e hora de expiração com a data e hora atuais. Se o certificado expirar dentro de um período de limite predeterminado, o aplicativo receberá um novo certificado. A duração do período limite é a sua escolha. Como prática recomendada, recomendamos obter um novo certificado pelo menos quatro semanas antes da expiração, caso o dispositivo fique offline por um longo período de tempo ou encontre problemas repetidos de rede ou servidor. Quanto mais cedo verificar, mais tempo terá para resolver quaisquer problemas.
O aplicativo obtém um novo certificado do emissor de certificado apropriado. A escolha de um emissor de certificado é da responsabilidade do administrador da rede local.
O aplicativo salva o novo certificado como ClientCert2 chamando CertStore_InstallClientCertificate e o adiciona à configuração de Wi-Fi Network1 chamando WifiConfig_SetClientCertStoreIdentifier.
O aplicativo recarrega a configuração Wi-Fi chamando WifiConfig_ReloadConfig. Esta etapa torna o ClientCert2 disponível para o dispositivo para uso em conexões de rede.
Verifique se a conexão de rede foi bem-sucedida.
Uma conexão bem-sucedida significa que ClientCert2 agora é válido.
Renomeie ClientCert2 para ClientCert1 chamando CertStore_MoveCertificate.
Desative Network1 chamando WifiConfig_SetNetworkEnabled para definir o estado Enabled da rede como false e, em seguida, reative Network1 chamando WifiConfig_SetNetworkEnabled para definir o estado Enabled como .
true
Desabilitar e reativar a configuração torna o conteúdo do certificado renomeado disponível para o aplicativo.
Falha na conexão significa que ClientCert2 ainda não é válido ou que algum outro erro ocorreu.
- Se o certificado ainda não for válido, continue com a etapa 7 para retornar a configuração de rede ao seu estado original.
- Se ocorrer algum outro erro, consulte Solução de problemas de rede para obter ajuda e tente novamente a conexão.
Independentemente de a conexão de rede ter sido bem-sucedida, recarregue a configuração Wi-Fi chamando WifiConfig_ReloadConfig. Se a conexão for bem-sucedida, a configuração recarregada usará o novo ClientCert1, que foi substituído por ClientCert2. Se a conexão falhar, a configuração recarregada usará ClientCert1.