共用方式為


憑證生命週期與續約

用戶端憑證金鑰組和 CA 憑證會定期到期。 您的網路基礎結構和裝置必須能夠處理憑證到期日並顯示新憑證,而不會失去連線能力。 在 RADIUS 伺服器驗證中使用的根 CA 憑證,以及用於裝置驗證的用戶端憑證,都需要不同的更新方法。

謹慎

由於憑證識別碼是全系統,因此新增憑證的 azsphere 命令或函數呼叫可能會覆寫先前命令或函數通話所新增的憑證,而可能導致網路連線失敗。 我們強烈建議您開發清楚的憑證更新程式,並謹慎選擇憑證識別碼。

如需Azure 球體如何使用憑證識別碼的詳細資訊,請參閱憑證識別碼。

更新 Root CA 憑證

CA 憑證是 RADIUS 伺服器上驗證憑證的 Root CA。 如果 CA 憑證到期,或伺服器的 PKI 變更,例如,如果伺服器從不同的憑證授權單位單位取得新的 Root CA,Azure 球體裝置就無法再驗證 RADIUS 驗證服務器。 不過,裝置需要繼續運作。

在一般的無線網路上,無法執行「持刀邊緣」完全移轉;也就是說,當 Root CA 無效時,您無法立即更新所有 Azure 球體裝置。 裝置在關機時可能處於離線狀態,或是各安裝的計時準確度可能會有所不同。 您的高階應用程式必須在目前的跟 CA 憑證到期或變更之前取得新的跟 CA 憑證,這樣新憑證才能在必要時使用。

建議的方法是建立並啟用第二個網路,該網路的設定與現有網路相同,但使用新的 Root CA 憑證。 當原始網路上的現有 Root CA 憑證失敗時,作業系統會自動嘗試連線到第二個網路。 應用程式接著可以使用新的 Root CA 取代原始網路上的憑證,並刪除第二個網路。 裝置接著可以使用原始網路連線,原始網路現在有新的 Root CA。 下圖摘要說明此方法。

更新 Root CA 憑證的應用程式流程

高階應用程式應遵循下列步驟,順暢地處理 Root CA 憑證的更新:

  1. 在一般作業中,應用程式會設定類型 WifiConfig_Security_Wpa2_EAP_TLS 為 Network1。 此網路會連結到裝置的用戶端憑證和 Root CA1,也就是 RADIUS 伺服器的原始 Root CA。

  2. 在 RootCA 到期前約 90 天,裝置會收到雲端到裝置的通知,指出即將需要使用 RADIUS 伺服器的新 Root CA 憑證。 通知可由網路系統管理員或其他電信業者觸發;可能的通知機制包括Azure IoT 中樞或 Azure IoT 中心雲端對裝置訊息。

    網路系統管理員負責更新 RADIUS 伺服器上的憑證,並確保 Azure 球體裝置會正確更新。

  3. 應用程式會取得新的 Root CA,並呼叫 CertStore_InstallRootCACertificate 將它儲存為 Root CA2。

  4. 應用程式會撥打 WifiConfig_AddDuplicateNetwork 以複製 Network1 設定,以建立新的網路 Network2。 接著,它會將 Root CA2 連結到網路 2,並啟用 Network2。 如果網路2 已在裝置上啟用且可以連線到網際網路,則如果網路1 無法使用,裝置將會使用它。

  5. 應用程式會每天撥打 WifiConfig_GetConnectedNetworkId 來投票,以判斷裝置連線到哪一個網路。

    如果連線網路的每日檢查失敗,錯誤可能是伺服器或裝置端發生憑證問題,或是來自其他問題。 如需協助,請參閱 疑難排解網路問題

    如果裝置已連線到 Network1,這表示憑證尚未過期,且所有專案都正常運作。 應用程式會重複此步驟,直到裝置連線到 Network2 為止。

    如果裝置已連線到 Network2,這表示舊的憑證已過期、已更新的 PKI 已在 RADIUS 伺服器上設定,且裝置可以使用 Root CA2 驗證服務器。

  6. 當裝置使用 Network2 正常運作時,應用程式會完成網路設定的變更:

    • 撥打 CertStore_MoveCertificate,將 Root CA2 重新命名為 Root CA1。 此函數會以 Root CA2 的內容覆寫過期的 Root CA1。
    • 透過呼叫WifiConfig_ReloadConfig 重載 Network1 設定。 Network1 設定現在符合目前的網路。
    • 透過呼叫WifiConfig_ForgetNetworkById 刪除 Network2 設定。

更新用戶端憑證

用戶端憑證包含用來驗證 Azure 球體裝置的公用和私密金鑰組。 跟 Root CA 憑證一樣,用戶端憑證會不時過期,而且裝置必須能夠呈現新的憑證。 您的高階應用程式負責在現有憑證到期之前取得新憑證。 應用程式 可以透過撥打CertStore_GetCertificateNotAfter,取得憑證到期的日期和時間。

下圖摘要說明此程式。 此模式可讓您的憑證更新程式碼使用常數 憑證標識符,例如 ClientCert1 和 ClientCert2,而非為每個新憑證建立唯一名稱。 此外,不需要網路交換或用戶端憑證清理。

更新用戶端憑證的應用程式流程

高階應用程式應遵循下列步驟,順暢地處理用戶端憑證的更新:

  1. 在一般作業中,應用程式會設定類型 WifiConfig_Security_Wpa2_EAP_TLS 為 Network1。 此網路會連結至裝置 (ClientCert1) 的用戶端憑證,以及 RADIUS 伺服器的 Root CA。 應用程式啟動更新程式之前,它會 透過撥打WifiConfig_GetNetworkIdByConfigNameWifiConfig_GetConnectedNetworkId,確認裝置已連線到 Network1。 如果網路識別碼相符,應用程式可以確定它已連線到預定的網路。

  2. 應用程式會定期呼叫 CertStore_GetCertificateNotAfter ,以判斷用戶端憑證何時到期。 或者,應用程式可以將到期日儲存在可靜音儲存空間中;不過,每次重新開機之後,仍應每日檢查到期日。

    應用程式會比較到期日和時間與目前的日期和時間。 如果憑證在預定的臨界值期間內到期,應用程式會取得新的憑證。 閾值期間的長度是您的選擇。 最佳作法是建議您在到期前至少四周取得新的憑證,以防裝置長時間離線或遇到網路或伺服器重複問題。 檢查越早,解決任何問題所需的時間就越多。

  3. 應用程式會從適當的憑證發行者取得新的憑證。 憑證發行者的選擇是由本機網路系統管理員負責。

  4. 應用程式 會透過呼叫CertStore_InstallClientCertificate 將新憑證儲存為 ClientCert2,並透過撥打 WifiConfig_SetClientCertStoreIdentifier 將新憑證新增至 Network1 Wi-Fi設定。

  5. 應用程式會透過呼叫WifiConfig_ReloadConfig重載 Wi-Fi設定。 此步驟讓 ClientCert2 可供裝置使用,以用於網路連線。

  6. 檢查網路連線是否成功。

    • 連線成功表示 ClientCert2 現在有效。

      • 撥打 CertStore_MoveCertificate,將 ClientCert2 重新命名為 ClientCert1。

      • 若要停用 Network1 請撥打WifiConfig_SetNetworkEnabled,將網路的 [啟用] 狀態設為 false,然後撥打 WifiConfig_SetNetworkEnabled 將 [已啟用] 狀態設為 true [已啟用] 以重新啟用 Network1。 停用並重新啟用設定可讓應用程式使用重新命名之憑證的內容。

    • 連線失敗表示 ClientCert2 尚未有效,或發生其他錯誤。

      • 如果憑證尚無效,請繼續執行步驟 7,將網路設定傳回其原始狀態。
      • 如果發生其他錯誤,請參閱 疑難排解網路問題 以取得協助並重試連線。
  7. 無論網路連線是否成功,都可透過呼叫WifiConfig_ReloadConfig重載 Wi-Fi設定。 如果連線成功,重新載入的設定將會使用新的 ClientCert1,該組態由 ClientCert2 取代。 如果連線失敗,重新載入的設定會使用 ClientCert1。