使用 X.509 憑證大規模在 Windows 裝置上建立及布建適用於 Linux 的 IoT Edge

適用於:IoT Edge 1.4 複選標記 IoT Edge 1.4

重要

支援 IoT Edge 1.5 LTS 和 IoT Edge 1.4 版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

本文提供使用 X.509 憑證在 Windows 裝置上自動布建一或多個適用於 Linux 的 IoT Edge 的端對端指示。 您可以使用 Azure IoT 中樞 裝置布建服務 (DPS) 自動布建 Azure IoT Edge 裝置。 如果您不熟悉自動布建程式,請先檢閱 布建概觀 ,再繼續進行。

工作如下所示:

  1. 產生憑證和金鑰。
  2. 建立單一裝置的個別註冊一組裝置的群組註冊
  3. 部署已安裝IoT Edge運行時間的Linux虛擬機,並將其連線至 IoT 中樞。

使用 X.509 憑證作為證明機制,是調整生產環境規模並簡化裝置佈建的絕佳方式。 一般而言,X.509 憑證會安排在信任的憑證鏈結中。 從自我簽署或受信任的跟證書開始,鏈結中的每個憑證都會簽署下一個較低的憑證。 此模式會透過每個中繼憑證,從跟證書到裝置上安裝的最終下游裝置憑證,建立委派的信任鏈結。

必要條件

雲端資源

  • 作用中的IoT中樞
  • Azure 中 IoT 中樞 裝置布建服務的實例,已連結至IoT中樞

裝置需求

具有下列最低需求的 Windows 裝置:

  • 系統需求

    • Windows 101/11 (專業版、企業版、IoT 企業版)
    • Windows Server 20191/2022
      1 已安裝所有目前累積更新的 Windows 10 和 Windows Server 2019 最低組建 17763。
  • 硬體需求

    • 最小可用記憶體:1 GB
    • 最小可用磁碟空間:10 GB
  • 虛擬化支援

    • 在 Windows 10 上,啟用 Hyper-V。 如需詳細資訊,請參閱 在 Windows 10 上安裝 Hyper-V。
    • 在 Windows Server 上安裝 Hyper-V 角色,並建立預設網路交換器。 如需詳細資訊,請參閱 Windows 上適用於 Linux 的 Azure IoT Edge 巢狀虛擬化。
    • 在虛擬機上,設定巢狀虛擬化。 如需詳細資訊,請參閱 巢狀虛擬化
  • 網路支援

    • Windows Server 未隨附預設參數。 您必須先建立虛擬交換器,才能將 EFLOW 部署至 Windows Server 裝置。 如需詳細資訊,請參閱 在 Windows 上建立 Linux 的虛擬交換器。
    • Windows 桌面版本隨附可用於 EFLOW 安裝的預設參數。 如有需要,您可以建立自己的自定義虛擬交換器。

提示

如果您想要在 Windows 部署上的適用於 Linux 的 Azure IoT Edge 中使用 GPU 加速的 Linux 模組 ,有幾個組態選項需要考慮。

您必須根據您的 GPU 架構安裝正確的驅動程式,而且您可能需要存取 Windows 測試人員計劃組建。 若要判斷您的設定需求並滿足這些必要條件,請參閱 Windows 上適用於 Linux 的 Azure IoT Edge GPU 加速。

請確定您花點時間滿足 GPU 加速的必要條件。 如果您決定要在安裝期間加速 GPU,則必須重新啟動安裝程式。

開發人員工具

準備您的目標裝置,以在 Windows 上安裝適用於 Linux 的 Azure IoT Edge,以及部署 Linux 虛擬機:

  1. 將目標裝置上的執行原則設定為 AllSigned。 您可以使用下列命令,在提升權限的 PowerShell 提示字元中檢查目前的執行原則:

    Get-ExecutionPolicy -List
    

    如果 的執行原則 local machine 不是 AllSigned,您可以使用下列項目來設定執行原則:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

如需 Windows PowerShell 模組上適用於 Linux 的 Azure IoT Edge 模組的詳細資訊,請參閱 PowerShell 函式參考

產生裝置身分識別憑證

裝置身分識別憑證是下游憑證,可透過信任的憑證鏈結連線到前 X.509 證書頒發機構單位 (CA) 憑證。 裝置身分識別憑證必須將其一般名稱 (CN) 設定為您想要裝置在IoT中樞擁有的裝置識別碼。

裝置身分識別憑證僅用於布建 IoT Edge 裝置,並使用 Azure IoT 中樞 驗證裝置。 它們不會簽署憑證,與IoT Edge裝置向模組或下游裝置呈現的CA憑證不同,以進行驗證。 如需詳細資訊,請參閱 Azure IoT Edge 憑證使用量詳細數據

建立裝置身分識別憑證之後,您應該會有兩個檔案:包含憑證公開部分的 .cer 或 .pem 檔案,以及具有憑證私鑰的 .cer 或 .pem 檔案。 如果您打算在 DPS 中使用群組註冊,則也需要相同憑證鏈結中中繼或根 CA 憑證的公用部分。

您需要下列檔案,才能使用 X.509 設定自動布建:

  • 裝置身分識別憑證及其私鑰憑證。 如果您建立個別註冊,裝置身分識別憑證會上傳至 DPS。 私鑰會傳遞至 IoT Edge 執行時間。
  • 完整鏈結憑證,其中至少應有裝置身分識別和中繼憑證。 完整鏈結憑證會傳遞至 IoT Edge 運行時間。
  • 來自信任憑證鏈結的中繼或跟證書 CA 憑證。 如果您建立群組註冊,此憑證會上傳至 DPS。

注意

目前,libiothsm 的限制可防止使用 2038 年 1 月 1 日或之後到期的憑證。

使用測試憑證 (選擇性)

如果您沒有可用來建立新身分識別憑證的證書頒發機構單位,而且想要試用此案例,Azure IoT Edge Git 存放庫會包含可用來產生測試憑證的腳本。 這些憑證僅供開發測試設計,不得用於生產環境。

若要建立測試憑證,請遵循建立示範憑證中的步驟 來測試 IoT Edge 裝置功能。 完成兩個必要區段來設定憑證產生腳本,並建立根 CA 憑證。 然後,依照步驟建立裝置身分識別憑證。 當您完成時,應該會有下列憑證鏈結和金鑰組:

  • <WRKDIR>\certs\iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>\private\iot-edge-device-identity-<name>.key.pem

您在IoT Edge裝置上需要這兩個憑證。 如果您要在 DPS 中使用個別註冊,則會上傳 .cert.pem 檔案。 如果您要在 DPS 中使用群組註冊,則也需要相同憑證鏈結中的中繼或根 CA 憑證才能上傳。 如果您使用示範憑證,請使用 <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem 憑證進行群組註冊。

建立 DPS 註冊

使用產生的憑證和密鑰,為一或多個 IoT Edge 裝置在 DPS 中建立註冊。

如果您想要布建單一 IoT Edge 裝置,請建立 個別註冊。 如果您需要布建多個裝置,請遵循建立 DPS 群組註冊的步驟。

當您在 DPS 中建立註冊時,有機會宣告初始裝置對應項 狀態。 在裝置對應項中,您可以透過解決方案中所需的任何計量,將標籤設定為群組裝置,例如區域、環境、位置或裝置類型。 這些標記可用來建立 自動部署

如需裝置布建服務中註冊的詳細資訊,請參閱 如何管理裝置註冊

建立 DPS 個別註冊

個別註冊會取得裝置身分識別憑證的公用部分,並將其與裝置上的憑證相符。

提示

本文中的步驟適用於 Azure 入口網站,但您也可以使用 Azure CLI 建立個別註冊。 如需詳細資訊,請參閱 az iot dps enrollment。 在 CLI 命令中,使用 已啟用邊緣的 旗標來指定註冊適用於 IoT Edge 裝置。

  1. Azure 入口網站 中,流覽至您 IoT 中樞 裝置布建服務的實例。

  2. 在 [設定] 下方,選取 [管理註冊]

  3. 選取 [ 新增個別註冊 ],然後完成下列步驟來設定註冊:

    • 機制:選取 X.509

    • 主要憑證 .pem 或.cer檔案:從裝置身分識別憑證上傳公用檔案。 如果您使用腳本來產生測試憑證,請選擇下列檔案:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • IoT 中樞 裝置識別碼:如果您想要的話,請提供裝置的標識碼。 您可以使用裝置識別碼,將個別裝置設為模組部署的目標。 如果您沒有提供裝置標識碼,則會使用 X.509 憑證中的一般名稱 (CN)。

    • IoT Edge 裝置:選取 [True ] 以宣告註冊適用於IoT Edge裝置。

    • 選取可指派此裝置的IoT中樞:選擇您要將裝置連線到的連結IoT中樞。 您可以選擇多個中樞,並根據選取的配置原則將裝置指派給其中一個中樞。

    • 初始裝置對應項狀態:如果您想要,請新增要新增至裝置對應項的標籤值。 您可以使用標籤將裝置群組設為自動部署的目標群組。 例如:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. 選取 [儲存]。

在 [管理註冊] 下,您可以看到您剛才建立之註冊的註冊標識符。 請記下它,因為您可以在布建裝置時使用它。

現在,此裝置的註冊已存在,IoT Edge 運行時間可以在安裝期間自動布建裝置。

安裝IoT Edge

在目標裝置上的 Windows 上部署適用於 Linux 的 Azure IoT Edge。

注意

下列 PowerShell 程式概述如何在 Windows 上將適用於 Linux 的 IoT Edge 部署至本機裝置。 若要使用 PowerShell 部署至遠端目標裝置,您可以使用 遠端 PowerShell 來建立遠端裝置的連線,並在該裝置上遠端執行這些命令。

  1. 在提升許可權的 PowerShell 工作階段中,根據您的目標裝置架構執行下列其中一個命令,以在 Windows 上下載適用於 Linux 的 IoT Edge。

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. 在裝置上的 Windows 上安裝適用於 Linux 的 IoT Edge。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    您可以在 Windows 安裝和 VHDX 目錄上指定適用於 Linux 的自定義 IoT Edge,方法是將 和 VHDXDIR="<FULLY_QUALIFIED_PATH>" 參數新增INSTALLDIR="<FULLY_QUALIFIED_PATH>"至 install 命令。 例如,如果您想要使用 D:\EFLOW 資料夾進行安裝和 VHDX 的 D:\EFLOW-VHDX ,您可以使用下列 PowerShell Cmdlet。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. 如果目標裝置尚未執行,請將目標裝置上的執行原則設定為 AllSigned 。 請參閱命令的 PowerShell 必要條件,以檢查目前的執行原則,並將執行原則設定為 AllSigned

  4. 在 Windows 部署上建立適用於 Linux 的 IoT Edge。 部署會建立Linux虛擬機,並為您安裝IoT Edge運行時間。

    Deploy-Eflow
    

    提示

    根據預設, Deploy-Eflow 命令會使用 1 GB 的 RAM、1 個 vCPU 核心和 16 GB 的磁碟空間來建立 Linux 虛擬機。 不過,VM 所需的資源高度相依於您部署的工作負載。 如果您的 VM 沒有足夠的記憶體來支援您的工作負載,它將無法啟動。

    您可以使用命令的選擇性參數來自定義虛擬機的可用資源 Deploy-Eflow 。 這是在具有最低硬體需求之裝置上部署 EFLOW 的必要專案。

    例如,下列命令會建立具有1個 vCPU 核心的虛擬機、1 GB 的 RAM(以 MB 表示),以及 2 GB 的磁碟空間:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    如需所有可用選用參數的資訊,請參閱 Windows 上適用於 Linux 的 IoT Edge PowerShell 函式。

    警告

    根據預設,EFLOW Linux 虛擬機沒有 DNS 設定。 使用 DHCP 的部署會嘗試取得 DHCP 伺服器所傳播的 DNS 組態。 請檢查您的 DNS 設定,以確保因特網連線。 如需詳細資訊,請參閱 AzEFLOW-DNS

    您可以將 GPU 指派給部署,以啟用 GPU 加速的 Linux 模組。 若要取得這些功能的存取權,您必須在 Windows 上安裝適用於 Linux 的 Azure IoT Edge GPU 加速中詳述的必要條件。

    若要使用 GPU 傳遞,請將 gpuNamegpuPassthroughTypegpuCount 參數新增至命令Deploy-Eflow 如需所有可用選用參數的資訊,請參閱 Windows 上適用於 Linux 的 IoT Edge PowerShell 函式。

    警告

    啟用硬體裝置傳遞可能會增加安全性風險。 如果適用,Microsoft 建議來自 GPU 廠商的裝置風險降低驅動程式。 如需詳細資訊,請參閱 使用離散裝置指派部署圖形裝置。

  5. 輸入 『Y』 以接受授權條款。

  6. 根據您的喜好設定,輸入 『O』 或 『R』 來切換 選擇性診斷數據

  7. 部署完成後,PowerShell 視窗會報告 [部署成功]。

    成功的部署會在訊息 PNG 結束時表示「部署成功」。

    部署成功之後,您就可以布建裝置。

使用雲端身分識別來佈建裝置

在裝置上安裝運行時間之後,請使用它用來連線到裝置布建服務和 IoT 中樞的信息來設定裝置。

備妥下列資訊:

  • DPS 識別碼範圍 值。 您可以從 Azure 入口網站 中 DPS 實例的概觀頁面擷取此值。
  • 裝置上的裝置身分識別憑證鏈結檔案。
  • 裝置上的裝置身分識別金鑰檔案。

在提升許可權的 PowerShell 工作階段中執行下列命令,並使用您自己的值更新佔位元值:

Provision-EflowVm -provisioningType DpsX509 -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -identityCertPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_CERTIFICATE_HERE -identityPrivateKey PASTE_ABSOLUTE_PATH_TO_IDENTITY_PRIVATE_KEY_HERE

確認安裝成功

確認 Windows 上的適用於 Linux 的 IoT Edge 已成功在 IoT Edge 裝置上安裝和設定。

您可以確認已使用您在裝置布建服務中建立的個別註冊。 流覽至 Azure 入口網站 中的裝置布建服務實例。 開啟您所建立之個別註冊的註冊詳細數據。 請注意,已指派註冊狀態,並列出裝置標識碼。

  1. 在 PowerShell 會話中使用下列命令登入 Windows 虛擬機上的適用於 Linux 的 IoT Edge:

    Connect-EflowVm
    

    注意

    唯一允許透過 SSH 連線到虛擬機的帳戶是建立虛擬機的使用者。

  2. 登入之後,您可以使用下列 Linux 命令來檢查執行 IoT Edge 模組的清單:

    sudo iotedge list
    
  3. 如果您需要針對IoT Edge服務進行疑難解答,請使用下列Linux命令。

    1. 如果您需要對服務進行疑難排解,請擷取服務記錄。

      sudo iotedge system logs
      
    2. 使用 工具來 check 驗證裝置的組態和連線狀態。

      sudo iotedge check
      

    注意

    在新布建的裝置上,您可能會看到與 IoT Edge 中樞相關的錯誤:

    ×生產整備:Edge Hub 的記憶體目錄會保存在主機文件系統上 - 錯誤

    無法檢查edgeHub容器的目前狀態

    新布建的裝置上預期會發生此錯誤,因為IoT Edge中樞模組未執行。 若要解決錯誤,請在 IoT 中樞 中設定裝置的模組並建立部署。 為裝置建立部署會啟動裝置上的模組,包括IoT Edge中樞模組。

當您建立新的 IoT Edge 裝置時,它會在 Azure 入口網站 中顯示狀態代碼417 -- The device's deployment configuration is not set。 此狀態正常,表示裝置已準備好接收模組部署。

在 Windows 上卸載適用於 Linux 的 IoT Edge

如果您想要從裝置移除適用於 Linux 的 Azure IoT Edge,請使用下列命令。

  1. 在 Windows 上開啟 設定
  2. 選取[新增或移除程式]
  3. 選取 Azure IoT Edge 應用程式
  4. 選取 [卸載]

下一步

裝置布建服務註冊程式可讓您在布建新裝置的同時,設定裝置標識碼和裝置對應項標籤。 您可以使用這些值,以使用自動裝置管理,以個別裝置或裝置群組為目標。 瞭解如何使用 Azure 入口網站 或使用 Azure CLI 大規模部署和監視 IoT Edge 模組。

您也可以: