Udostępnij za pośrednictwem


Cykl życia certyfikatu i odnawianie

Pary kluczy certyfikatów klienta i certyfikaty urzędu certyfikacji wygasają regularnie. Infrastruktura sieci i urządzenia sieciowe muszą mieć możliwość obsługi wygasania certyfikatu i prezentowania nowego certyfikatu bez utraty łączności. Certyfikaty głównego urzędu certyfikacji, używane w uwierzytelnianiu serwera RADIUS, oraz certyfikaty klientów, które są używane w uwierzytelnianiu urządzenia, wymagają różnych metod aktualizacji.

Ostrożność

Ponieważ identyfikatory certyfikatów są dostępne w całym systemie, polecenie sfery az lub wywołanie funkcji, które dodaje nowy certyfikat, może zastąpić certyfikat dodany przez wcześniejsze wywołanie polecenia lub funkcji, co może powodować awarie połączenia sieciowego. Zdecydowanie zalecamy opracowanie przejrzystych procedur aktualizacji certyfikatów i staranne wybieranie identyfikatorów certyfikatów.

Zobacz Identyfikatory certyfikatów , aby uzyskać więcej informacji o tym, jak usługa Azure Sphere korzysta z identyfikatorów certyfikatów.

Aktualizowanie certyfikatu głównego urzędu certyfikacji

Certyfikat urzędu certyfikacji to główny urząd certyfikacji certyfikatu uwierzytelniania na serwerze USŁUGI RADIUS. Jeśli certyfikat urzędu certyfikacji wygaśnie lub zmieni się infrastruktura PKI serwera — na przykład jeśli serwer uzyska nowy urząd certyfikacji głównej od innego urzędu certyfikacji — urządzenia Usługi Azure Sphere nie będą już mogły uwierzytelniać serwera uwierzytelniania USŁUGI RADIUS. Urządzenia muszą jednak nadal działać.

W typowej sieci bezprzewodowej nie można wykonać jednorazowej "krawędzi noża"; oznacza to, że nie można zaktualizować wszystkich urządzeń Usługi Azure Sphere dokładnie wtedy, gdy główny urząd certyfikacji stanie się nieprawidłowy. Urządzenia mogą być w trybie offline w krytycznym momencie lub dokładność przechowywania czasu może się różnić w zależności od instalacji. Aplikacja wysokiego poziomu musi mieć możliwość uzyskania nowego certyfikatu głównego urzędu certyfikacji przed wygaśnięciem bieżącego certyfikatu lub zmianą, aby nowy certyfikat był gotowy do użycia, gdy jest to wymagane.

Zalecanym rozwiązaniem jest utworzenie i włączenie drugiej sieci, która ma taką samą konfigurację jak istniejąca sieć, ale korzysta z nowego certyfikatu głównego urzędu certyfikacji. Gdy istniejący certyfikat głównego urzędu certyfikacji zakończy się niepowodzeniem w oryginalnej sieci, system operacyjny automatycznie spróbuje połączyć się z drugą siecią. Aplikacja może następnie zastąpić certyfikat w oryginalnej sieci nowym urzędem certyfikacji głównej i usunąć drugą sieć. Następnie urządzenie może nawiązać połączenie przy użyciu oryginalnej sieci, która ma teraz nowy główny urząd certyfikacji. Na poniższej ilustracji podsumowano to podejście.

Przepływ aplikacji w celu zaktualizowania certyfikatu głównego urzędu certyfikacji

Aplikacja wysokiego poziomu powinna wykonać następujące czynności, aby bezproblemowo obsługiwać aktualizację certyfikatu głównego urzędu certyfikacji:

  1. W ramach normalnego działania aplikacja konfiguruje sieć 1 typu WifiConfig_Security_Wpa2_EAP_TLS. Ta sieć jest połączona z certyfikatem klienta urządzenia i z urzędem certyfikacji głównej CA1, który jest pierwotnym urzędem certyfikacji głównej serwera RADIUS.

  2. Około 90 dni przed wygaśnięciem rootca urządzenie otrzymuje powiadomienie z chmury na urządzenie, że wkrótce będzie wymagany nowy certyfikat głównego urzędu certyfikacji dla serwera RADIUS. Powiadomienie może zostać wywołane przez administratora sieci lub innego operatora; możliwe mechanizmy powiadomień obejmują komunikat "Azure IoT Hub lub Azure IoT Central cloud-to-device".

    Administrator sieci jest odpowiedzialny za zaktualizowanie certyfikatu na serwerze RADIUS oraz za zapewnienie, że urządzenia Azure Sphere zostaną odpowiednio zaktualizowane.

  3. Aplikacja uzyskuje nowy główny urząd certyfikacji i wywołuje CertStore_InstallRootCACertificate , aby zapisać go jako główny urząd certyfikacji 2.

  4. Aplikacja tworzy nową sieć Network2, wywołując WifiConfig_AddDuplicateNetwork duplikat konfiguracji Network1. Następnie łączy główny urząd certyfikacji2 z siecią 2 i włącza funkcję Network2. Jeśli sieć Network2 jest włączona na urządzeniu i może połączyć się z Internetem, urządzenie będzie z niego korzystać, jeśli sieć 1 nie jest dostępna.

  5. Aplikacja codziennie przeprowadza ankietę, dzwoniąc do WifiConfig_GetConnectedNetworkId , aby ustalić, z którą siecią jest podłączone urządzenie.

    Jeśli codzienne sprawdzanie połączonej sieci zakończy się niepowodzeniem, błąd może być spowodowany problemem z certyfikatem po stronie serwera lub urządzenia albo z powodu innego problemu. Aby uzyskać pomoc , zobacz Rozwiązywanie problemów z siecią .

    Jeśli urządzenie jest połączone z siecią Network1, oznacza to, że certyfikat nie wygasł jeszcze i wszystko działa poprawnie. Aplikacja powtarza ten krok, aż urządzenie połączy się z siecią Network2.

    Jeśli urządzenie jest połączone z siecią Network2, oznacza to, że stary certyfikat wygasł, zaktualizowana infrastruktura PKI jest skonfigurowana na serwerze RADIUS i urządzenie może uwierzytelnić serwer przy użyciu głównego urzędu certyfikacji 2.

  6. Gdy urządzenie działa poprawnie z siecią Network2, aplikacja wprowadza zmiany w konfiguracji sieci:

    • Zmienia nazwę głównego urzędu certyfikacji ca2 na główny urząd certyfikacji1, wywołując CertStore_MoveCertificate. Ta funkcja zastępuje wygasły główny urząd certyfikacji1 zawartością głównego urzędu certyfikacji2.
    • Ponownie ładuje konfigurację sieci Network1, wywołując WifiConfig_ReloadConfig. Konfiguracja Network1 jest teraz zgodna z bieżącą siecią.
    • Usuwa konfigurację sieci 2, wywołując WifiConfig_ForgetNetworkById.

Aktualizowanie certyfikatu klienta

Certyfikat klienta składa się z pary kluczy publicznych i prywatnych, które są używane do uwierzytelniania urządzenia Azure Sphere. Podobnie jak certyfikat głównego urzędu certyfikacji, certyfikat klienta wygaśnie od czasu do czasu i urządzenie musi mieć możliwość zaprezentowania nowego certyfikatu. Aplikacja wysokiego poziomu jest odpowiedzialna za uzyskanie nowego certyfikatu przed wygaśnięciem istniejącego certyfikatu. Aplikacja może uzyskać datę i godzinę wygaśnięcia certyfikatu, dzwoniąc do CertStore_GetCertificateNotAfter.

Poniższa ilustracja zawiera podsumowanie tej procedury. Ten wzorzec umożliwia kod aktualizacji certyfikatu używanie stałych identyfikatorów certyfikatów, takich jak ClientCert1 i ClientCert2, zamiast tworzenia unikatowej nazwy dla każdego nowego certyfikatu. Ponadto nie wymaga wymiany sieci ani oczyszczania certyfikatu klienta.

Przepływ aplikacji w celu zaktualizowania certyfikatu klienta

Aplikacja wysokiego poziomu powinna wykonać następujące czynności, aby bezproblemowo obsługiwać aktualizację certyfikatu klienta:

  1. W ramach normalnego działania aplikacja konfiguruje sieć 1 typu WifiConfig_Security_Wpa2_EAP_TLS. Ta sieć jest połączona z certyfikatem klienta urządzenia (ClientCert1) i z urzędem certyfikacji głównej serwera RADIUS. Przed rozpoczęciem procedury aktualizacji aplikacja sprawdza, czy urządzenie jest połączone z siecią Network1, dzwoniąc do WifiConfig_GetNetworkIdByConfigName i WifiConfig_GetConnectedNetworkId. Jeśli identyfikatory sieci są zgodne, aplikacja może mieć pewność, że jest połączona z siecią docelową.

  2. Aplikacja wywołuje CertStore_GetCertificateNotAfter w regularnych odstępach czasu, aby określić, kiedy certyfikat klienta wygaśnie. Alternatywnie aplikacja może przechowywać datę wygaśnięcia w magazynach z możliwością wyciszenia; jednak nadal powinna sprawdzać datę wygaśnięcia codziennie i po każdym ponownym uruchomieniu.

    Aplikacja porównuje datę i godzinę wygaśnięcia z bieżącą datą i godziną. Jeśli certyfikat wygasa w ustalonym okresie progowym, aplikacja otrzymuje nowy certyfikat. Długość okresu progowego to wybór. Najlepszym rozwiązaniem jest uzyskanie nowego certyfikatu co najmniej cztery tygodnie przed wygaśnięciem, jeśli urządzenie jest w trybie offline przez dłuższy czas lub napotka powtarzające się problemy z siecią lub serwerem. Przy wcześniejszym sprawdzeniu, tym więcej czasu będziesz musiał rozwiązać wszelkie problemy.

  3. Aplikacja otrzymuje nowy certyfikat od odpowiedniego wystawcę certyfikatu. Wybór wystawcy certyfikatu jest obowiązkiem administratora sieci lokalnej.

  4. Aplikacja zapisuje nowy certyfikat jako ClientCert2, wywołując CertStore_InstallClientCertificate i dodaje go do konfiguracji Wi-Fi Network1, wywołując WifiConfig_SetClientCertStoreIdentifier.

  5. Aplikacja ponownie załaduje konfigurację Wi-Fi, dzwoniąc do WifiConfig_ReloadConfig. Ten krok sprawia, że clientCert2 jest dostępny dla urządzenia do użytku w połączeniach sieciowych.

  6. Sprawdź, czy połączenie sieciowe zakończyło się pomyślnie.

    • Pomyślne połączenie oznacza, że clientCert2 jest teraz prawidłowe.

      • Zmień nazwę clientCert2 na ClientCert1, dzwoniąc do CertStore_MoveCertificate.

      • Wyłącz funkcję Sieć1, wywołując WifiConfig_SetNetworkEnabled , aby ustawić stan Włączone sieci na fałsz, a następnie ponownie włącz sieć Network1, wywołując WifiConfig_SetNetworkEnabled ustawić stan Włączone na true. Wyłączenie i ponowne włączenie konfiguracji sprawia, że zawartość certyfikatu o zmienionej nazwie jest dostępna dla aplikacji.

    • Brak połączenia oznacza, że clientCert2 jest jeszcze nieprawidłowy lub wystąpił inny błąd.

      • Jeśli certyfikat jest jeszcze nieprawidłowy, przejdź do kroku 7, aby przywrócić pierwotną konfigurację sieci.
      • Jeśli wystąpił inny błąd, zobacz Rozwiązywanie problemów z siecią , aby uzyskać pomoc i ponowić próbę połączenia.
  7. Niezależnie od tego, czy połączenie sieciowe zakończyło się pomyślnie, ponownie załaduj konfigurację Wi-Fi, wywołując WifiConfig_ReloadConfig. Jeśli połączenie się powiedzie, ponownie załadowana konfiguracja użyje nowego ClientCert1, który został zastąpiony przez ClientCert2. Jeśli połączenie nie powiodło się, ponownie załadowana konfiguracja użyje funkcji ClientCert1.