分享方式:


將 IoT 中樞資源移轉至新的 TLS 憑證根

Azure IoT 中樞和裝置佈建服務 (DPS) 使用 Baltimore CyberTrust Root 所簽發的 TLS 憑證 (將在 2025 年到期。 自 2023 年 2 月開始,全球 Azure 雲端中的所有 IoT 中樞都會移轉至 DigiCert Global Root G2 所簽發的新 TLS 憑證。

您應該立即開始規劃將 IoT 中樞移轉至新 TLS 憑證的效果:

  • 在其證書存儲中沒有任何 DigiCert Global Root G2 的裝置將無法連線到 Azure。
  • IoT 中樞的IP位址將會變更。

時間軸

IoT 中樞 移轉已完成,但已核准延伸模組的中樞除外。 如果您的IoT中樞在未與產品小組達成協議的情況下使用 Baltimore 憑證,您的中樞將會移轉,而不需要任何進一步通知。

在所有IoT中樞移轉之後,DPS會在2024年1月15日至9月30日期間執行其移轉。

針對每個具有擴充協定的IoT中樞,您可以預期下列各項:

  • 移轉前一到兩周:每個IoT中樞的訂用帳戶擁有者會收到一封電子郵件通知,告知他們移轉日期。 此通知不適用於手動移轉的中樞。
  • 轉當天:IoT 中樞將其 TLS 憑證切換至 DigiCert 全域根 G2,這不會造成 IoT 中樞停機。 IoT 中樞 不會強制裝置重新連線。
  • 移轉之後:訂用帳戶擁有者會收到確認IoT中樞已移轉的通知。 裝置會根據個別的重試邏輯嘗試重新連線,此時他們要求並接收來自 IoT 中樞 的新伺服器證書,而且只有在他們信任 Digicert Global Root G2 時才重新連線。

要求擴充功能

從 2023 年 8 月起,擴充要求程式會關閉 IoT 中樞 和 IoT Central。 如果您的IoT中樞在未與產品小組簽訂擴充協議的情況下使用 Baltimore 憑證,您的中樞將會進行移轉,而不需要任何進一步通知。

必要步驟

若要準備移轉,請執行下列步驟:

  1. 將 Baltimore CyberTrust Root 保留在您裝置的受信任根存放區中。 將 DigiCert 全域根 G2 和 Microsoft RSA 跟證書授權單位 2017 憑證新增至您的裝置。 您可以從 Azure 證書頒發機構單位詳細數據下載所有這些憑證

    請務必在裝置上擁有這三個憑證,直到 IoT 中樞 和 DPS 移轉完成為止。 保留 Baltimore CyberTrust Root 可確保您的裝置在移轉之前保持連線,並新增 DigiCert Global Root G2 可確保您的裝置在移轉后順暢地切換和重新連線。 Microsoft RSA 跟證書授權單位 2017 有助於防止未來中斷,以防 DigiCert Global Root G2 意外淘汰。

    如需 IoT 中樞 建議憑證做法的詳細資訊,請參閱 TLS 支援

  2. 請確定您未釘選任何中繼或分葉憑證,並使用公用根目錄來執行 TLS 伺服器驗證。

    IoT 中樞 和 DPS 偶爾會變換其中繼證書頒發機構單位 (CA)。 在這些情況下,如果您的裝置明確尋找中繼 CA 或分葉憑證,您的裝置將會失去連線能力。 不過,使用公用根目錄執行驗證的裝置將會繼續連線,而不論中繼 CA 的任何變更為何。

如需如何測試裝置是否已準備好進行 TLS 憑證移轉的詳細資訊,請參閱部落格文章 Azure IoT TLS:重大變更幾乎在這裡

檢查 IoT 中樞的移轉狀態

若要知道 IoT 中樞是否已移轉,請檢查中樞的作用中憑證跟證書根目錄。

  1. Azure 入口網站中,瀏覽至您的 IoT 中樞。

  2. 在導覽功能表的 [自動化] 區段中,選取 [匯出範本]。

  3. 等候範本產生,然後流覽至 JSON 範本中的 resources.properties.features 屬性。 如果 RootCertificateV2 列為功能,則中樞已移轉至 DigiCert Global G2。

常見問題集

我的裝置使用 SAS/X.509/TPM 驗證。 此移轉會影響我的裝置嗎?

移轉 TLS 憑證不會影響 IoT 中樞 驗證裝置的方式。 此移轉會影響裝置驗證 IoT 中樞和 DPS 端點的方式。

IoT 中樞 和 DPS 將其伺服器證書呈現給裝置,而裝置會針對根目錄驗證該憑證,以信任其與端點的連線。 裝置必須在其受信任的證書存儲中擁有新的 DigiCert Global Root G2,才能在此移轉之後驗證並連線到 Azure。

我的裝置會使用 Azure IoT SDK 進行連線。 我是否需要執行任何動作,讓 SDK 能夠使用新的憑證?

要看情況而定。

  • ,如果您使用 Java V1 裝置用戶端。 此用戶端會與 SDK 一起封裝 Baltimore Cybertrust 跟證書。 您可以更新至 Java V2,或手動將 DigiCert 全域根 G2 憑證新增至您的原始程式碼。
  • ,如果您使用其他 Azure IoT SDK。 大部分的 Azure IoT SDK 都依賴基礎操作系統的證書存儲,在 TLS 交握期間擷取受信任的根目錄以進行伺服器驗證。

無論使用的 SDK 為何,我們強烈建議所有客戶在移轉前先驗證其裝置,如部落格文章 Azure IoT TLS 的驗證一節所述:重大變更幾乎在這裡

我的裝置會連線到主權 Azure 區域。 我是否需要更新它們?

否,只有 全域 Azure 雲端 會受到這項變更的影響。 此移轉中未包含主權雲端。

我使用IoT Central。 我需要更新我的裝置嗎?

是,IoT Central 會在後端同時使用 IoT 中樞 和 DPS。 TLS 移轉會影響您的解決方案,您必須更新裝置以維護連線。

您可以依自己的排程,將應用程式從 Baltimore CyberTrust Root 移轉至 DigiCert Global G2 Root。 以下是建議的流程:

  1. 將 Baltimore CyberTrust Root 保留在您的裝置上,直到 2024 年 9 月 30 日完成轉換期間(必須防止連線中斷)。
  2. 除了 Baltimore 根目錄,請確定 DigiCert Global G2 Root 已新增至您信任的根存放區。
  3. 請確定您未釘選任何中繼或分葉憑證,並使用公用根目錄來執行 TLS 伺服器驗證。
  4. 在您的 IoT Central 應用程式中,您可以在 設定> Application>Baltimore Cybertrust Migration找到跟證書設定。 
    1. 選取 [DigiCert Global G2 Root] 以移轉至新的憑證跟證書。
    2. 按兩下 [ 儲存 ] 以起始移轉。
    3. 如有需要,您可以選取 [Baltimore CyberTrust Root] 並儲存變更,以移回 Baltimore 根 目錄。 此選項可在 2023 年 8 月 15 日之前使用,然後將會停用。

我的裝置需要多久才能重新連線?

數個因素可能會影響裝置重新連線行為。

裝置會設定為在特定間隔回傳其連線。 Azure IoT SDK 中的預設值是每隔 45 分鐘進行一次回傳。 如果您已在解決方案中實作不同的模式,則您的體驗可能會有所不同。

此外,在移轉過程中,IoT 中樞可能會取得新的IP位址。 如果您的裝置使用 DNS 伺服器連線到 IoT 中樞,可能需要一小時的時間,DNS 伺服器才能使用新的位址重新整理。 如需詳細資訊,請參閱 IoT 中樞IP位址

何時可以從我的裝置移除 Baltimore Cybertrust Root?

完成移轉的所有階段之後,您就可以移除 Baltimore 跟證書。 如果您只使用 IoT 中樞,則可以在 IoT 中樞 移轉排定於 2023 年 10 月 15 日完成之後移除舊的跟證書。 如果您使用裝置布建服務或 IoT Central,則必須將兩個跟證書保留在裝置上,直到 DPS 移轉排定於 2024 年 9 月 30 日完成為止。

疑難排解

如果您在 IoT 中樞 遇到一般連線問題,請參閱下列疑難解答資源:

如果您在移轉憑證之後觀看 Azure 監視器,您應該尋找 DeviceDisconnect 事件,後面接著 Device 連線 事件,如下列螢幕快照所示:

Azure 監視器記錄的螢幕快照,其中顯示 DeviceDisconnect 和 Device 連線 事件。

如果您的裝置中斷連線,但在移轉后未重新連線,請嘗試下列步驟:

  • 檢查您的 DNS 解析和交握要求是否已完成,而不會發生任何錯誤。

  • 確認裝置同時具有 DigiCert 全域跟 G2 憑證,以及安裝在證書存儲中的 Baltimore 憑證。

  • 使用下列 Kusto 查詢來識別裝置的連線活動。 如需詳細資訊,請參閱 Kusto 查詢語言 (KQL) 概觀

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections"
    | extend parsed_json = parse_json(properties_s)
    | extend SDKVersion = tostring(parsed_json.sdkVersion), DeviceId = tostring(parsed_json.deviceId), Protocol = tostring(parsed_json.protocol)
    | distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion
    
  • 在 Azure 入口網站 中使用IoT中樞的 [計量] 索引卷標來追蹤裝置重新連線程式。 在理想情況下,您應該不會在完成此移轉之前和之後看到裝置的變更。 要監看的其中一個建議計量是 連線 裝置,但您可以使用您主動監視的任何圖表。