使用 X.509 憑證在 Windows 上大規模建立及布建 IoT Edge 裝置
適用於: IoT Edge 1.1
重要
IoT Edge 1.1 終止支援日期為 2022 年 12 月 13 日。 如需此產品、服務、技術或 API 的支援資訊,請參閱 Microsoft 產品生命週期。 如需更新至最新版IoT Edge的詳細資訊,請參閱 更新IoT Edge。
本文提供使用 X.509 憑證自動布建一或多個 Windows IoT Edge 裝置的端對端指示。 您可以使用 Azure IoT 中樞裝置佈建服務 (DPS) 自動佈建 Azure IoT Edge 裝置。 如果您不熟悉自動佈建程序,請先檢閱佈建概觀,再繼續作業。
注意
從 Azure IoT Edge 1.2 版開始,不支援使用 Windows 容器的 Azure IoT Edge。
請考慮使用新的方法來在 Windows 裝置上執行 IoT Edge、 Windows 上的 Azure IoT Edge for Linux。
如果您想要在 Windows 上使用適用於 Linux 的 Azure IoT Edge,您可以遵循對等操作指南中的步驟。
工作如下所示:
- 產生憑證和金鑰。
- 建立單一裝置的個別註冊或建立一組裝置的群組註冊。
- 安裝 IoT Edge 執行階段,並使用 IoT 中樞來註冊裝置。
使用 X.509 憑證作為證明機制,是調整生產環境規模並簡化裝置佈建的絕佳方式。 X.509 憑證通常會配置在憑證信任鏈結中。 從自我簽署或受信任的根憑證開始,鏈結中的每個憑證都會簽署下一個較低的憑證。 此模式會透過每個中繼憑證,從根憑證到裝置上安裝的最終下游裝置憑證,建立委派的信任鏈結。
必要條件
雲端資源
- 使用中的 IoT 中樞
- Azure 中的 IoT 中樞裝置佈建服務執行個體,其與您的 IoT 中樞連結
- 如果您沒有裝置佈建服務執行個體,則可以遵循 IoT 中樞裝置佈建服務快速入門建立新的 IoT 中樞裝置佈建服務和連結 IoT 中樞與裝置佈建服務章節的指示。
- 裝置佈建服務開始執行之後,請從 [概觀] 頁面中複製 [識別碼範圍] 的值。 當您設定 IoT Edge 執行階段時會用到此值。
裝置需求
要成為IoT Edge裝置的實體或虛擬 Windows 裝置。
產生裝置身分識別憑證
裝置身分識別憑證是下游裝置憑證,可透過信任的憑證鏈結連線到最高 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
在本節中,您會準備適用於IoT Edge的 Windows VM 或實體裝置。 然後,您會安裝 IoT Edge。
Azure IoT Edge 會依賴 OCI 相容的容器執行階段。 Moby 是 Moby 型引擎,包含在安裝腳本中,這表示沒有額外的步驟可安裝引擎。
若要安裝 IoT Edge 執行時間:
以系統管理員身分執行 PowerShell。
使用 PowerShell 的 AMD64 工作階段,而不是 PowerShell(x86)。 如果您不確定所使用的工作階段類型,請執行下列命令:
(Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
執行 Deploy-IoTEdge 命令,其會執行下列工作:
- 檢查您的 Windows 電腦是否處於支援的版本
- 開啟容器功能
- 下載Moby引擎和IoT Edge運行時間
. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; ` Deploy-IoTEdge
如果出現提示,請重新啟動您的裝置。
當您在裝置上安裝 IoT Edge 時,您可以使用其他參數來修改程式,包括:
- 引導流量通過 Proxy 伺服器
- 將安裝程式指向本機目錄以進行離線安裝
如需這些其他參數的詳細資訊,請參閱 搭配 Windows 容器使用 IoT Edge 的 PowerShell 腳本。
使用雲端身分識別來佈建裝置
在裝置上安裝執行階段之後,請使用裝置用來連線至裝置佈建服務和 IoT 中樞的資訊來設定裝置。
請備妥下列資訊:
- DPS「識別碼範圍」值。 您可以在 Azure 入口網站中,從 DPS 執行個體的概觀頁面擷取此值。
- 裝置上的裝置身分識別憑證鏈結檔案。
- 裝置上的裝置身分識別金鑰檔案。
在系統管理員模式下開啟 [Azure PowerShell] 視窗。 安裝 IoT Edge 時,請務必使用 PowerShell 的 AMD64 會話,而不是 PowerShell (x86)。
Initialize-IoTEdge 命令會在您的電腦上設定 IoT Edge 運行時間。 命令預設為使用 Windows 容器手動佈建,因此請使用
-DpsX509
旗標搭配 X.509 憑證驗證使用自動布建。將、
identity cert chain path
和identity key path
的佔位元值scope_id
取代為來自 DPS 實例的適當值,以及裝置上的檔案路徑。-RegistrationId paste_registration_id_here
如果您想要將裝置識別碼設定為識別憑證的 CN 名稱以外的名稱,請新增 參數。. {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; ` Initialize-IoTEdge -DpsX509 -ScopeId paste_scope_id_here -X509IdentityCertificate paste_identity_cert_chain_path_here -X509IdentityPrivateKey paste_identity_key_path_here
提示
組態檔會將您的憑證和金鑰資訊儲存為檔案 URI。 不過,Initialize-IoTEdge 命令會為您處理這個格式化步驟,因此您可以提供裝置上憑證和密鑰檔案的絕對路徑。
確認安裝成功
如果執行階段順利啟動,您可以移至 IoT 中樞,並開始將 IoT Edge 模組部署到您的裝置。
您可以驗證系統是否已使用您在裝置佈建服務中所建立的個別註冊。 在 Azure 入口網站中導覽至您的裝置佈建服務執行個體。 開啟所建立個別註冊的註冊詳細資料。 請注意,註冊狀態是 [已指派],並且會列出裝置識別碼。
請在您的裝置上使用下列命令,確認 IoT Edge 已成功安裝並啟動。
檢查 IoT Edge 服務的狀態。
Get-Service iotedge
檢查服務記錄。
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
列出執行中的模組。
iotedge list
下一步
佈建新裝置時,裝置佈建服務註冊流程可讓您同時設定裝置識別碼和裝置對應項標記。 您可以使用這些值來鎖定要使用自動裝置管理的個別裝置或裝置群組。 了解如何使用 Azure 入口網站大規模部署和監視 IoT Edge 模組,或使用 Azure CLI 執行相同作業。