Ciclo de vida e renovação do certificado

Pares de chave de certificado do cliente e certificados de AC 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. Certificados de AC raiz, que são usados na autenticação do servidor RADIUS, e certificados de cliente, que são usados na autenticação do dispositivo, exigem abordagens diferentes para atualizar.

Cuidado

Como as IDs de certificado são em todo o sistema, um comando az sphere 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. Recomendamos que você desenvolva procedimentos claros de atualização de certificado e escolha as IDs de certificado cuidadosamente.

Consulte IDs de certificado para obter mais informações sobre como o Azure Sphere usa IDs de certificado.

Atualizar um certificado de AC raiz

Um certificado de AC é a AC Raiz do certificado de autenticação no servidor RADIUS. Se o certificado de AC expirar ou o PKI para o servidor for alterado, por exemplo, se o servidor adquirir uma nova AC Raiz de uma autoridade de certificado 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 executar um recorte de "ponta de faca"; ou seja, você não pode atualizar todos os dispositivos do Azure Sphere no exato instante em que a AC Raiz se torna inválida. Os dispositivos podem estar offline no momento crítico ou a precisão da manutenção de tempo pode variar entre as instalações. Seu aplicativo de alto nível deve ser capaz de obter o novo certificado de AC raiz antes que o atual expire ou seja alterado, de modo 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 que a rede existente, mas que usa o novo certificado de AC raiz. Quando o certificado de AC Raiz existente falhar na rede original, o sistema operacional tentará se conectar automaticamente à segunda rede. Em seguida, o aplicativo pode substituir o certificado na rede original pela nova AC Raiz e excluir a segunda rede. Em seguida, o dispositivo pode se conectar usando a rede original, que agora tem a nova AC Raiz. A figura a seguir resume essa abordagem.

Fluxo de aplicativo para atualizar o certificado de AC raiz

Um aplicativo de alto nível deve seguir estas etapas para manipular perfeitamente uma atualização para o certificado de AC raiz:

  1. Como parte da operação normal, o aplicativo configura a Rede1 do tipo WifiConfig_Security_Wpa2_EAP_TLS. Essa rede está vinculada ao certificado de cliente do dispositivo e ao CA1 raiz, que é a AC raiz original para o servidor RADIUS.

  2. Cerca de 90 dias antes da expiração do RootCA, o dispositivo recebe uma notificação de nuvem para dispositivo de que um novo certificado de AC raiz para o servidor RADIUS será necessário em breve. A notificação pode ser disparada por um administrador de rede ou outro operador; os mecanismos de notificação possíveis 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.

  3. O aplicativo adquire uma nova AC Raiz e chama CertStore_InstallRootCACertificate para salvá-lo como CA2 raiz.

  4. O aplicativo cria uma nova rede, Network2, chamando WifiConfig_AddDuplicateNetwork para duplicar a configuração network1. Em seguida, ele vincula o CA2 Raiz à Rede 2 e habilita o Network2. Se o Network2 estiver habilitado no dispositivo e puder se conectar à Internet, o dispositivo o usará se a Rede1 não estiver disponível.

  5. O aplicativo pesquisa diariamente chamando WifiConfig_GetConnectedNetworkId para determinar a qual rede o dispositivo está conectado.

    Se o marcar diário da rede conectada falhar, o erro poderá resultar de um problema de certificado no lado do servidor ou do dispositivo ou de algum outro problema. Consulte Solucionar problemas de rede para obter ajuda.

    Se o dispositivo estiver conectado à Rede1, 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 à Rede2.

    Se o dispositivo estiver conectado à Rede2, isso significa que o certificado antigo expirou, o PKI atualizado será configurado no servidor RADIUS e o dispositivo poderá autenticar o servidor usando o CA2 raiz.

  6. Quando o dispositivo está funcionando corretamente com o Network2, o aplicativo conclui as alterações na configuração de rede:

Atualizar um certificado de cliente

O certificado do cliente é composto pelo par de chaves público e privado que são usados para autenticar o dispositivo do Azure Sphere. Assim como o certificado de AC Raiz, o certificado do 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 de 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 do cliente.

Fluxo de aplicativo para atualizar o certificado do cliente

Um aplicativo de alto nível deve seguir estas etapas para manipular perfeitamente uma atualização para o certificado do cliente:

  1. Como parte da operação normal, o aplicativo configura a Rede1 do tipo WifiConfig_Security_Wpa2_EAP_TLS. Essa rede está vinculada ao certificado do cliente do dispositivo (ClientCert1) e à AC Raiz para o servidor RADIUS. Antes do aplicativo iniciar o procedimento de atualização, ele verifica se o dispositivo está conectado à Rede1 chamando WifiConfig_GetNetworkIdByConfigName e WifiConfig_GetConnectedNetworkId. Se as IDs de rede corresponderem, o aplicativo poderá ter certeza de que está conectado à rede pretendida.

  2. O aplicativo chama CertStore_GetCertificateNotAfter em intervalos regulares para determinar quando o certificado do cliente expirará. Como alternativa, o aplicativo pode armazenar a data de validade no armazenamento mutável; no entanto, ele ainda deve marcar a data de validade diariamente e após cada reinicialização.

    O aplicativo compara a data e a hora de validade 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 é sua escolha. Como prática recomendada, recomendamos obter um novo certificado com pelo menos quatro semanas de antecedência da expiração caso o dispositivo esteja offline por um longo período de tempo ou encontre problemas repetidos de rede ou servidor. Quanto mais cedo você marcar, mais tempo terá para resolve problemas.

  3. O aplicativo obtém um novo certificado do emissor de certificado apropriado. A escolha de um emissor de certificado é responsabilidade do administrador de rede local.

  4. O aplicativo salva o novo certificado como ClientCert2 chamando CertStore_InstallClientCertificate e o adiciona à configuração Wi-Fi Network1 chamando WifiConfig_SetClientCertStoreIdentifier.

  5. O aplicativo recarrega a configuração de Wi-Fi chamando WifiConfig_ReloadConfig. Esta etapa disponibiliza o ClientCert2 para o dispositivo para uso em conexões de rede.

  6. Verifique se a conexão de rede foi bem-sucedida.

    • A conexão bem-sucedida significa que o ClientCert2 agora é válido.

      • Renomeie ClientCert2 para ClientCert1 chamando CertStore_MoveCertificate.

      • Desabilite a Rede1 chamando WifiConfig_SetNetworkEnabled para definir o estado habilitado da rede como false e, em seguida, reabilite a Rede1 chamando WifiConfig_SetNetworkEnabled para definir o estado Habilitado como true. Desabilitar e habilitar novamente a configuração torna o conteúdo do certificado renomeado disponível para o aplicativo.

    • A falha na conexão significa que o ClientCert2 ainda não é válido ou que ocorreu algum outro erro.

      • Se o certificado ainda não for válido, continue com a etapa 7 para retornar a configuração de rede ao estado original.
      • Se algum outro erro ocorreu, consulte Solucionar problemas de rede para obter ajuda e tentar novamente a conexão.
  7. Independentemente de a conexão de rede ter êxito, recarregue a configuração Wi-Fi chamando WifiConfig_ReloadConfig. Se a conexão tiver êxito, a configuração recarregada usará o novo ClientCert1, que foi substituído pelo ClientCert2. Se a conexão falhar, a configuração recarregada usará ClientCert1.