Partilhar via


Ciclo de vida e renovação do certificado

Os pares de chaves de certificado do cliente e os certificados de AC expiram regularmente. A infraestrutura de rede e os dispositivos têm de conseguir processar a expiração do certificado e apresentar um novo certificado sem perder a conectividade. Os certificados de AC de raiz, que são utilizados na autenticação do servidor RADIUS, e os certificados de cliente, que são utilizados na autenticação do dispositivo, requerem diferentes abordagens para atualizar.

Atenção

Uma vez que os IDs de certificado são ao nível do sistema, um comando az sphere ou uma chamada de função que adiciona um novo certificado pode substituir um certificado que foi adicionado por uma chamada de comando ou função anterior, potencialmente causando falhas de ligação de rede. Recomendamos vivamente que desenvolva procedimentos de atualização de certificados claros e escolha cuidadosamente os IDs de certificado.

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

Atualizar um certificado de AC de Raiz

Um certificado de AC é a AC de Raiz do certificado de autenticação no servidor RADIUS. Se o certificado da AC expirar ou o PKI do servidor for alterado( por exemplo, se o servidor adquirir uma nova AC de Raiz a partir de uma autoridade de certificação diferente), os dispositivos do Azure Sphere deixarão de poder autenticar o servidor de autenticação RADIUS. No entanto, os dispositivos têm de continuar a funcionar.

Numa rede sem fios típica, não é possível efetuar uma transferência "ponta da faca"; ou seja, não pode atualizar todos os dispositivos do Azure Sphere no instante exato em que a AC de Raiz se torna inválida. Os dispositivos podem estar offline no momento crítico ou a precisão de temporizador pode variar consoante as instalações. A sua aplicação de alto nível tem de conseguir obter o novo certificado da AC de Raiz antes de o atual expirar ou ser alterado, para que o novo certificado esteja pronto para ser utilizado quando necessário.

A abordagem recomendada é criar e ativar uma segunda rede que tenha a mesma configuração que a rede existente, mas que utilize o novo certificado da AC de Raiz. Quando o certificado da AC de Raiz existente falhar na rede original, o SO tentará ligar-se automaticamente à segunda rede. Em seguida, a aplicação pode substituir o certificado na rede original pela nova AC de Raiz e eliminar a segunda rede. Em seguida, o dispositivo pode ligar-se através da rede original, que tem agora a nova AC de Raiz. A figura seguinte resume esta abordagem.

Fluxo de aplicação para atualizar o certificado de AC de Raiz

Uma aplicação de alto nível deve seguir estes passos para processar de forma totalmente integrada uma atualização para o certificado da AC de Raiz:

  1. Como parte do funcionamento normal, a aplicação configura a Rede1 do tipo WifiConfig_Security_Wpa2_EAP_TLS. Esta rede está ligada ao certificado de cliente do dispositivo e à AC1 de Raiz, que é a AC de Raiz original para o servidor RADIUS.

  2. Cerca de 90 dias antes de o RootCA expirar, o dispositivo recebe uma notificação da cloud para o dispositivo de que será necessário um novo certificado de AC de Raiz para o servidor RADIUS em breve. A notificação pode ser acionada por um administrador de rede ou outro operador; Os mecanismos de notificação possíveis incluem um Hub IoT do Azure ou uma mensagem de cloud para dispositivo 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 serão atualizados adequadamente.

  3. A aplicação adquire uma nova AC de Raiz e chama CertStore_InstallRootCACertificate para guardá-la como AC2 de Raiz.

  4. A aplicação cria uma nova rede, Rede2, ao chamar WifiConfig_AddDuplicateNetwork para duplicar a configuração da Rede1. Em seguida, liga a AC2 de Raiz à Rede 2 e ativa a Rede2. Se a Rede2 estiver ativada no dispositivo e conseguir ligar à Internet, o dispositivo irá utilizá-la se a Rede1 não estiver disponível.

  5. A aplicação consulta diariamente ao chamar WifiConfig_GetConnectedNetworkId para determinar a rede à qual o dispositivo está ligado.

    Se a verificação diária da rede ligada falhar, o erro poderá resultar de um problema de certificado no lado do servidor ou do dispositivo ou de outro problema. Veja Resolver problemas de rede para obter ajuda.

    Se o dispositivo estiver ligado à Rede1, significa que o certificado ainda não expirou e está tudo a funcionar corretamente. A aplicação repete este passo até o dispositivo se ligar à Rede2.

    Se o dispositivo estiver ligado à Rede2, significa que o certificado antigo expirou, a PKI atualizada é configurada no servidor RADIUS e o dispositivo é capaz de autenticar o servidor com a AC2 de Raiz.

  6. Quando o dispositivo está a funcionar corretamente com a Rede2, a aplicação conclui as alterações à configuração de rede:

Atualizar um certificado de cliente

O certificado de cliente é composto pelo par de chaves públicas e privadas que são utilizados para autenticar o dispositivo do Azure Sphere. Tal como o certificado da AC de Raiz, o certificado de cliente expira de vez em quando e o dispositivo tem de conseguir apresentar um novo certificado. A sua aplicação de alto nível é responsável por obter o novo certificado antes de o certificado existente expirar. Uma aplicação pode obter a data e hora em que um certificado expira ao chamar CertStore_GetCertificateNotAfter.

A figura seguinte resume este procedimento. Este padrão permite que o código de atualização do certificado utilize 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 nem limpeza do certificado de cliente.

Fluxo de aplicação para atualizar o certificado de cliente

Uma aplicação de alto nível deve seguir estes passos para processar de forma totalmente integrada uma atualização do certificado de cliente:

  1. Como parte do funcionamento normal, a aplicação configura a Rede1 do tipo WifiConfig_Security_Wpa2_EAP_TLS. Esta rede está ligada ao certificado de cliente do dispositivo (ClientCert1) e à AC de Raiz do servidor RADIUS. Antes de a aplicação iniciar o procedimento de atualização, verifica se o dispositivo está ligado à Rede1 ao chamar WifiConfig_GetNetworkIdByConfigName e WifiConfig_GetConnectedNetworkId. Se os IDs de rede corresponderem, a aplicação pode ter a certeza de que está ligada à rede pretendida.

  2. A aplicação chama CertStore_GetCertificateNotAfter em intervalos regulares para determinar quando o certificado de cliente irá expirar. Em alternativa, a aplicação pode armazenar a data de expiração num armazenamento mutável; no entanto, deve continuar a verificar a data de expiração diariamente e após cada reinício.

    A aplicação compara a data e hora de expiração com a data e hora atuais. Se o certificado expirar dentro de um período de limiar predeterminado, a aplicação obterá um novo certificado. A duração do período de limiar é a sua escolha. Como melhor prática, recomendamos obter um novo certificado com, pelo menos, quatro semanas de antecedência, caso o dispositivo esteja offline durante um longo período de tempo ou se depare com problemas de rede ou servidor repetidos. Quanto mais cedo verificar, mais tempo terá de resolver os problemas.

  3. A aplicação obtém um novo certificado do emissor de certificados adequado. A escolha de um emissor de certificados é da responsabilidade do administrador de rede local.

  4. A aplicação guarda o novo certificado como ClientCert2 ao chamar CertStore_InstallClientCertificate e adiciona-o à configuração do Wi-Fi Network1 ao chamar WifiConfig_SetClientCertStoreIdentifier.

  5. A aplicação recarrega a configuração do Wi-Fi ao chamar WifiConfig_ReloadConfig. Este passo disponibiliza o ClientCert2 para o dispositivo para utilização em ligações de rede.

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

    • A ligação com êxito significa que ClientCert2 é agora válido.

      • Mude o nome clientCert2 para ClientCert1 ao chamar CertStore_MoveCertificate.

      • Desative a Rede1 ao chamar WifiConfig_SetNetworkEnabled para definir o estado Ativado da rede como falso e, em seguida, volte a ativar a Rede1 ao chamar WifiConfig_SetNetworkEnabled para definir o estado Ativado como true. Desativar e reativar a configuração disponibiliza os conteúdos do certificado cujo nome foi mudado para a aplicação.

    • A falha de ligação significa que ClientCert2 ainda não é válido ou que ocorreu outro erro.

      • Se o certificado ainda não for válido, continue com o passo 7 para devolver a configuração de rede ao estado original.
      • Se tiver ocorrido outro erro, veja Resolver problemas de rede para obter ajuda e repetir a ligação.
  7. Independentemente de a ligação de rede ter sido bem-sucedida, recarregue a configuração do Wi-Fi ao chamar WifiConfig_ReloadConfig. Se a ligação for bem-sucedida, a configuração recarregada utilizará o novo ClientCert1, que foi substituído por ClientCert2. Se a ligação falhar, a configuração recarregada utilizará ClientCert1.