適用於:
IoT Edge 1.5
重要
IoT Edge 1.5 LTS 是 支援的版本。 自 2024 年 11 月 12 日起,IoT Edge 1.4 LTS 已結束生命週期。 如果您是舊版,請參閱更新 IoT Edge。
本文提供使用 X.509 憑證自動布建一或多個 Linux IoT Edge 裝置的逐步指示。 使用 Azure IoT 中樞裝置 布建服務自動布建 Azure IoT Edge 裝置(DPS)。 如果您不熟悉自動布建,請先檢閱 布建概觀 ,再繼續。
以下是使用 X.509 憑證布建 IoT Edge 裝置的步驟:
- 產生憑證和金鑰。
- 建立單一裝置的 個別註冊 或一組裝置的 群組註冊 。
- 安裝 IoT Edge 執行階段,並使用 IoT 中樞來註冊裝置。
X.509 憑證可讓您調整生產環境,並簡化裝置布建。 X.509 憑證通常會配置在憑證信任鏈結中。 鏈起始於自我簽署或受信任的根證書,鏈中的每個證書都會簽署下一層的證書。 這種模式會從根憑證開始,經由每個中繼憑證建立委派的信任鏈,直到安裝在裝置上的最終下游裝置憑證。
提示
如果您的裝置具有類似 TPM 2.0 的硬體安全性模組 (HSM),請將 X.509 金鑰安全地儲存在 HSM 中。 瞭解如何使用 iotedge-tpm2cloud 範例,在此藍圖中大規模實作零觸控布建。
必要條件
雲端資源
- 使用中的 IoT 中樞
- Azure 中的 IoT 中樞裝置佈建服務執行個體,其與您的 IoT 中樞連結
- 如果您沒有裝置佈建服務執行個體,則可以遵循 IoT 中樞裝置佈建服務快速入門建立新的 IoT 中樞裝置佈建服務和連結 IoT 中樞與裝置佈建服務章節的指示。
- 裝置佈建服務開始執行之後,請從 [概觀] 頁面中複製 [識別碼範圍] 的值。 當您設定 IoT Edge 執行階段時會用到此值。
裝置需求
使用實體或虛擬 Linux 裝置作為 IoT Edge 裝置。
產生裝置身分識別憑證
裝置身分識別憑證是下游裝置憑證,可透過信任的憑證鏈結連線到最高 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。
使用測試憑證 (選擇性)
如果您沒有證書頒發機構單位可建立新的身分識別憑證,而且想要嘗試此案例,請使用 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.pemIoT 中樞裝置識別碼:視需要提供裝置的識別碼。 您可以使用裝置識別碼,將個別裝置設為模組部署的目標。 如果您未提供裝置識別碼,則系統會使用 X.509 憑證中的通用名稱 (CN)。
IoT Edge 裝置:選取 [True] 以宣告註冊適用於 IoT Edge 裝置。
選取可作為此裝置指派目標的 IoT 中樞:選擇您要將裝置連線到的已連結 IoT 中樞。 您可以選擇多個中樞,然後系統會根據所選取的配置原則,將裝置指派給其中一個中樞。
初始裝置對應項狀態:視需要新增要新增至裝置對應項的標記值。 您可以使用標記,以將裝置群組設定為自動部署的目標。 例如:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
選取 [儲存]。
在 [管理註冊] 下,您可以看到剛建立的註冊所擁有的 [註冊識別碼]。 記下此識別碼,以在佈建裝置時使用。
現在此裝置已有註冊,因此 IoT Edge 執行階段可以在安裝期間自動佈建此裝置。
安裝 IoT Edge
在本節中,您將為 IoT Edge 準備 Linux 虛擬機器或實體裝置。 然後,您會安裝 IoT Edge。
執行下列命令以新增套件存放庫,然後將 Microsoft 套件簽署金鑰新增至信任金鑰的清單。
重要
2022 年 6 月 30 日,Raspberry Pi OS Stretch 已從第 1 層 OS 支援清單中淘汰。 若要避免潛在的安全性弱點,請將主機 OS 更新為 Bullseye。
對於第 2 層支援的平台作業系統,Azure IoT Edge 版本會提供安裝套件。 請參閱離線或特定版本安裝中的安裝步驟(選擇性)。
您可以使用幾個命令來完成安裝。 開啟終端機,然後執行下列命令:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
如需作業系統版本的詳細資訊,請參閱 Azure IoT Edge 支援的平台。
注意
使用 Azure IoT Edge 軟體套件時,必須遵守每個封裝中的授權條款 (usr/share/doc/{package-name} 或 LICENSE 目錄)。 使用套件之前請先閱讀授權條款。 安裝及使用套件即表示接受這些授權條款。 如果您不同意授權條款,請勿使用該套件。
安裝容器引擎
Azure IoT Edge 會依賴 OCI 相容的容器執行階段。 針對實際執行案例,建議使用 Moby 引擎。 Moby 引擎是 IoT Edge 正式支援的唯一容器引擎。 Docker CE/EE 容器映像與 Moby 執行階段相容。 如果您使用 Ubuntu Core 快照,Docker 快照是由 Canonical 提供服務,且支援生產環境。
安裝 Moby 引擎。
sudo apt-get update; \
sudo apt-get install moby-engine
依預設,容器引擎不會設定容器記錄大小限制。 一段時間后,這種情況可能會導致裝置填滿記錄,並用盡磁碟空間。 不過,您可以將記錄設定為在本機顯示,但這是選擇性的。 若要深入了解記錄設定,請參閱 準備在生產環境中部署IoT Edge解決方案。
下列步驟示範如何將容器設定為使用 local 記錄驅動程式作為記錄機制。
建立或編輯現有 Docker 精靈的組態檔
sudo nano /etc/docker/daemon.json將預設記錄驅動程式設定為
local記錄驅動程式,如範例所示。{ "log-driver": "local" }重新啟動容器引擎,讓變更生效。
sudo systemctl restart docker
安裝 IoT Edge 執行階段
IoT Edge 服務提供及維護 IoT Edge 裝置的安全性標準。 此服務會在每次開機時啟動,並藉由啟動 IoT Edge 執行階段讓裝置進入啟動程序。
注意
從 1.2 版開始, Azure IoT 身分識別服務會處理 IoT Edge 的身分識別布建和管理,以及需要與 IoT 中樞通訊的其他裝置元件。
本節中的步驟代表在具有網際網路連線的裝置上安裝最新 IoT Edge 版本的一般程序。 如果您需要安裝特定版本,例如發行前版本,或需要在離線時安裝,請遵循本文稍後的 離線或特定版本安裝 步驟。
提示
如果您已經有執行舊版且想要升級至最新版本的 IoT Edge 裝置,請使用 更新 IoT Edge 中的步驟。 較新版本與舊版 IoT Edge 有明顯的不同,因此升級時需要特定步驟。
安裝最新版本的 IoT Edge 和 IoT 識別服務套件 (如果您尚未擁有最新版本):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
使用雲端身分識別來佈建裝置
在您於裝置上安裝執行階段後,請使用用於連線至裝置布建服務和 IoT 中樞的資訊來設定該裝置。
請確定您有下列資訊:
- DPS「識別碼範圍」值。 從 Azure 入口網站中 DPS 實例的概觀頁面取得此值。
- 裝置上的裝置身分識別憑證鏈結檔案。
- 裝置上的裝置身分識別金鑰檔案。
根據IoT Edge安裝隨附的範本檔案,為您的裝置建立組態檔。
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
開啟IoT Edge裝置上的組態檔。
sudo nano /etc/aziot/config.toml
尋找該檔案的 [佈建] 區段。 取消 X.509 憑證的 DPS 布建行的批注,並確保所有其他布建行都已加上批注。
# DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "SCOPE_ID_HERE"
# Uncomment to send a custom payload during DPS registration
# payload = { uri = "PATH_TO_JSON_FILE" }
[provisioning.attestation]
method = "x509"
registration_id = "REGISTRATION_ID_HERE"
identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" # For example, "file:///var/aziot/device-id.pem"
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE" # For example, "file:///var/aziot/device-id.key"
# auto_reprovisioning_mode = Dynamic
更新
id_scope的值,使用您從 DPS 實例複製的範圍識別碼。在 IoT Hub 中為設備輸入一個
registration_id,這是設備所擁有的識別碼。 註冊識別碼必須符合身分識別憑證的一般名稱 (CN)。使用您的憑證和金鑰資訊更新
identity_cert和identity_pk的值。您可以將身分識別憑證值提供為檔案 URI,或者可以使用 EST 或本機證書機構即時發行。 根據您使用的格式,只取消批注一行。
您可以提供身分識別私鑰值作為檔案 URI 或 PKCS#11 URI。 根據您使用的格式,只取消批注一行。
如果您使用任何 PKCS#11 URI,請在組態檔中尋找 PKCS#11 區段,並輸入您的 PKCS#11 組態資訊。
如需關於憑證的詳細資訊,請參閱管理 IoT Edge 憑證。
如需佈建組態設定的詳細資訊,請參閱設定 IoT Edge 裝置設定。
或者,尋找該檔案的自動重新佈建模式區段。 使用
auto_reprovisioning_mode參數來設定裝置的重新佈建行為。 動態 - 當裝置偵測到可能已從一個 IoT 中樞移動到另一個 IoT 中樞時,重新佈建。 這是預設值。 AlwaysOnStartup - 裝置重新開機或當機時重新佈建會導致精靈重新啟動。 OnErrorOnly - 永遠不會自動觸發裝置重新佈建。 如果裝置因為連線錯誤而無法在身分識別設定期間連線到IoT中樞,則每個模式都有一個隱性裝置重新配置後援機制。 如需詳細資訊,請參閱 IoT 中樞裝置重新佈建概念。選擇性地取消註解
payload參數,以指定本機 JSON 檔案的路徑。 當裝置註冊時,檔案的內容會 以其他數據的形式傳送至 DPS 。 這適用於自訂配置。 例如,如果您想要根據 IoT 隨插即用模型識別碼來配置裝置,而不需人為介入。儲存並關閉檔案。
套用您對 IoT Edge 所做的設定變更。
sudo iotedge config apply
確認安裝成功
如果執行程式成功啟動,請前往您的 IoT 中樞,並開始將 IoT Edge 模組部署到裝置上。
在您的裝置上執行這些命令,以檢查是否已安裝並執行IoT Edge。
檢查 IoT Edge 服務的狀態。
sudo iotedge system status
檢視服務記錄。
sudo iotedge system logs
列出執行中的模組。
sudo iotedge list
下一步
裝置佈建服務的註冊流程允許您在佈建新設備時設定設備 ID 和設備雙胞標籤。 使用這些值,以具有自動裝置管理的個別裝置或裝置群組為目標。 瞭解如何使用 Azure 入口網站或 Azure CLI大規模部署和監視 IoT Edge 模組。