使用 X.509 憑證大規模建立和佈建 IoT Edge for Linux on Windows 裝置
適用於: IoT Edge 1.1
重要
IoT Edge 1.1 終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版IoT Edge的詳細資訊,請參閱 更新IoT Edge。
本文提供使用 X.509 憑證自動佈建一或多個 IoT Edge for Linux on Windows 裝置的端對端指示。 您可以使用 Azure IoT 中樞裝置佈建服務 (DPS) 自動佈建 Azure IoT Edge 裝置。 如果您不熟悉自動佈建程序,請先檢閱佈建概觀,再繼續作業。
工作如下所示:
- 產生憑證和金鑰。
- 建立單一裝置的「個別註冊」或建立一組裝置的「群組註冊」。
- 部署已安裝 IoT Edge 執行階段的 Linux 虛擬機器,並將其連線至 IoT 中樞。
使用 X.509 憑證作為證明機制,是調整生產環境規模並簡化裝置佈建的絕佳方式。 X.509 憑證通常會配置在憑證信任鏈結中。 從自我簽署或受信任的根憑證開始,鏈結中的每個憑證都會簽署下一個較低的憑證。 此模式會透過每個中繼憑證,從根憑證到裝置上安裝的最終下游裝置憑證,建立委派的信任鏈結。
必要條件
雲端資源
- 使用中的 IoT 中樞
- Azure 中的 IoT 中樞裝置佈建服務執行個體,其與您的 IoT 中樞連結
- 如果您沒有裝置佈建服務執行個體,則可以遵循 IoT 中樞裝置佈建服務快速入門建立新的 IoT 中樞裝置佈建服務和連結 IoT 中樞與裝置佈建服務章節的指示。
- 裝置佈建服務開始執行之後,請從 [概觀] 頁面中複製 [識別碼範圍] 的值。 當您設定 IoT Edge 執行階段時會用到此值。
裝置需求
符合下列最低需求的 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 角色,並建立預設的網路交換器。 如需詳細資訊,請參閱 Azure IoT Edge for Linux on Windows 的巢狀虛擬化。
- 在虛擬機器上設定巢狀虛擬化。 如需詳細資訊,請參閱巢狀虛擬化。
網路支援
- Windows Server 不會隨附預設交換器。 您需要先建立虛擬交換器,才能將 EFLOW 部署至 Windows Server 裝置。 如需詳細資訊,請參閱在 Windows 上建立適用於 Linux 的虛擬交換器。
- Windows 桌面版隨附可用於安裝 EFLOW 的預設交換器。 如有需要,您可以建立自己的自訂虛擬交換器。
提示
如果您想要在 Azure IoT Edge for Linux on Windows 部署上使用 GPU 加速 Linux 模組,有多種設定選項可供考慮。
您將需要根據 GPU 架構來安裝正確的驅動程式,而且可能需要存取 Windows 測試人員計畫組建。 若要判斷您的設定需求並滿足這些必要條件,請參閱適用於 Azure IoT Edge for Linux on Windows 的 GPU 加速。
請確保您花點時間滿足 GPU 加速的必要條件。 如果您決定要在安裝期間啟用 GPU 加速,則需要重新啟動安裝流程。
開發人員工具
您可以使用 PowerShell 或 Windows Admin Center 來管理 IoT Edge 裝置。 每個公用程式都有自己的必要條件:
如果您想要使用 PowerShell,請使用下列步驟來準備目標裝置,以在 Windows 上安裝適用於 Linux 的 Azure IoT Edge,以及部署 Linux 虛擬機:
將目標裝置上的執行原則設定為
AllSigned
。 您可以使用下列命令,在提升權限的 PowerShell 提示字元中檢查目前的執行原則:Get-ExecutionPolicy -List
如果
local machine
的執行原則不是AllSigned
,則您可以使用下列項目來設定執行原則:Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
如需 Azure IoT Edge for Linux on Windows PowerShell 模組的詳細資訊,請參閱 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 註冊
使用您所產生的憑證和金鑰,以在 DPS 中為一或多個 IoT Edge 裝置建立註冊。
如果您想要佈建單一 IoT Edge 裝置,則請建立「個別註冊」。 如果您需要佈建多個裝置,則請遵循建立 DPS「群組註冊」的步驟。
在 DPS 中建立註冊時,您就有機會宣告初始裝置對應項狀態。 在裝置對應項中,您可以根據解決方案中需要的任何計量 (例如區域、環境、位置或裝置類型) 來設定標記,進而將裝置分組。 這些標記會用來建立自動部署。
如需裝置佈建服務中的註冊詳細資訊,請參閱如何管理裝置註冊。
建立 DPS 個別註冊
個別註冊會採用裝置身分識別憑證的公開部分,並將這個部分與裝置上的憑證進行比對。
提示
本文中的步驟適用於 Azure 入口網站,但您也可以使用 Azure CLI 建立個別註冊。 如需詳細資訊,請參閱 az iot dps 註冊。 CLI 命令中會使用「啟用 Edge」旗標來指定 IoT Edge 裝置的註冊。
在 Azure 入口網站中,導覽至 IoT 中樞裝置佈建服務的執行個體。
在 [設定] 下方,選取 [管理註冊]。
選取 [新增個別註冊],然後完成下列步驟以設定註冊:
機制:選取 [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": {} } }
選取 [儲存]。
在 [管理註冊] 下,您可以看到剛建立的註冊所擁有的 [註冊識別碼]。 記下此識別碼,以在佈建裝置時使用。
現在此裝置已有註冊,因此 IoT Edge 執行階段可以在安裝期間自動佈建此裝置。
安裝 IoT Edge
在目標裝置上部署 Azure IoT Edge for Linux on Windows。
在您的目標裝置上安裝適用於Linux的IoT Edge。
注意
下列 PowerShell 流程概述如何將 IoT Edge for Linux on Windows 部署至本機裝置。 若要使用 PowerShell 部署至遠端目標裝置,您可以使用遠端 PowerShell 建立遠端裝置的連線,並在該裝置上遠端執行這些命令。
在提升權限的 PowerShell 工作階段中,執行下列每個命令以下載 IoT Edge for Linux on Windows。
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEflowMSI" -OutFile $msiPath
在您的裝置上安裝 IoT Edge for Linux on Windows。
Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
您可以將
INSTALLDIR="<FULLY_QUALIFIED_PATH>"
和VHDXDIR="<FULLY_QUALIFIED_PATH>"
參數新增至安裝命令,以指定自訂安裝 IoT Edge for Linux on Windows 和 VHDX 目錄。 例如,如果您想要使用 D:\EFLOW 資料夾進行安裝,並將 D:\EFLOW-VHDX 用於安裝 VHDX,您可以使用下列的 PowerShell Cmdlet。Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
如果尚未執行,請將目標裝置上的執行原則設定為
AllSigned
。 請參閱命令的 PowerShell 必要條件,以檢查目前的執行原則,並將執行原則設定為AllSigned
。建立 IoT Edge for Linux on Windows 部署。 部署會建立 Linux 虛擬機器,並為您安裝 IoT Edge 執行階段。
Deploy-Eflow
提示
根據預設,
Deploy-Eflow
命令會建立具有 1 GB RAM、1 個 vCPU 核心和 16 GB 磁碟空間的 Linux 虛擬機器。 不過,VM 所需的資源與您部署的工作負載高度相關。 如果您的 VM 沒有足夠的記憶體可支援您的工作負載,將無法啟動。您可以使用
Deploy-Eflow
命令的選擇性參數來自訂虛擬機器的可用資源。例如,下列命令會建立具有 4 個 vCPU 核心的虛擬機、4 GB 的 RAM(以 MB 表示),以及 20 GB 的磁碟空間:
Deploy-Eflow -cpuCount 4 -memoryInMB 4096 -vmDiskSize 20
如需所有可用的選擇性參數資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函數。
警告
根據預設,EFLOW Linux 虛擬機器沒有 DNS 設定。 使用 DHCP 的部署會嘗試取得 DHCP 伺服器傳播的 DNS 設定。 請檢查您的 DNS 設定,以確保網際網路連線能力。 如需詳細資訊,請參閱 AzEFLOW-DNS。
您可以將 GPU 指派給部署,以啟用 GPU 加速的 Linux 模組。 若要獲取這些功能的存取權,您必須安裝適用於 Azure IoT Edge for Linux on Windows 的 GPU 加速中詳述的必要條件。
若要使用 GPU 傳遞,請將 gpuName、gpuPassthroughType 和 gpuCount 參數新增至
Deploy-Eflow
命令。 如需所有可用的選擇性參數資訊,請參閱適用於 IoT Edge for Linux on Windows 的 PowerShell 函數。警告
啟用硬體裝置傳遞可能會增加安全性風險。 當適用時,Microsoft 會建議使用來自 GPU 廠商的裝置風險降低驅動程式。 如需詳細資訊,請參閱使用離散裝置指派來部署圖表裝置。
輸入「Y」以接受授權條款。
請根據您的喜好設定,輸入「O」或「R」來切換 [選擇性診斷資料] 開啟或關閉。
部署完成後,PowerShell 視窗會報告 [部署成功]。
成功部署之後,您即可佈建裝置。
使用雲端身分識別來佈建裝置
在裝置上安裝執行階段之後,請使用裝置用來連線至裝置佈建服務和 IoT 中樞的資訊來設定裝置。
請備妥下列資訊:
- DPS「識別碼範圍」值。 您可以在 Azure 入口網站中,從 DPS 執行個體的概觀頁面擷取此值。
- 裝置上的裝置身分識別憑證鏈結檔案。
- 裝置上的裝置身分識別金鑰檔案。
您可以使用 PowerShell 或 Windows Admin Center 來布建 IoT Edge 裝置。
針對 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 -identityPrivKeyPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_PRIVATE_KEY_HERE
確認安裝成功
確認已成功在 IoT Edge 裝置上安裝並設定 IoT Edge for Linux on Windows。
您可以驗證系統是否已使用您在裝置佈建服務中所建立的個別註冊。 在 Azure 入口網站中導覽至您的裝置佈建服務執行個體。 開啟所建立個別註冊的註冊詳細資料。 請注意,註冊狀態是 [已指派],並且會列出裝置識別碼。
使用 PowerShell 工作階段中的下列命令,登入到 IoT Edge for Linux on Windows 虛擬機器:
Connect-EflowVm
注意
唯一允許透過 SSH 連線至虛擬機器的帳戶,是建立虛擬機器的使用者。
登入之後,您可以使用下列 Linux 命令來檢查執行 IoT Edge 模組的清單:
sudo iotedge list
如果您需要針對 IoT Edge 服務進行疑難排解,請使用下列 Linux 命令。
如果您需要對服務進行疑難排解,請擷取服務記錄。
sudo journalctl -u iotedge
使用
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
。 此狀態為正常,表示裝置已就緒可接收模組部署。
解除安裝 IoT Edge for Linux on Windows
如果您想要從裝置中移除 Azure IoT Edge for Linux on Windows,則請使用下列命令。
- 開啟 Windows 上的 [設定]
- 選取 [新增或移除程式]
- 選取 [Azure IoT Edge LTS] 應用程式
- 選取 [解除安裝]
下一步
佈建新裝置時,裝置佈建服務註冊流程可讓您同時設定裝置識別碼和裝置對應項標記。 您可以使用這些值來鎖定要使用自動裝置管理的個別裝置或裝置群組。 了解如何使用 Azure 入口網站大規模部署和監視 IoT Edge 模組,或使用 Azure CLI 執行相同作業。
您也可以:
- 繼續部署 IoT Edge 模組,以了解如何將模組部署至您的裝置。
- 了解如何在 IoT Edge for Linux on Windows 虛擬機器上管理憑證,並將檔案從主機 OS 傳輸到 Linux 虛擬機器。
- 了解如何設定您的 IoT Edge 裝置,以透過 Proxy 伺服器進行通訊。