適用於: IoT Edge 1.5
重要
IoT Edge 1.5 LTS 是 支援的版本。 自 2024 年 11 月 12 日起,IoT Edge 1.4 LTS 已結束生命週期。 如果您是舊版,請參閱更新 IoT Edge。
本文提供將IoT Edge裝置設定為透明閘道的詳細指示,讓其他裝置可以連線到IoT中樞。 在本文中, IoT Edge 閘道 表示設定為透明閘道的 IoT Edge 裝置。 如需詳細資訊,請參閱如何使用 IoT Edge 裝置作為閘道。
注意
下游裝置無法使用檔案上傳。
設置透明網關連接的主要步驟有三個。 本文說明第一個步驟:
- 將閘道裝置設定為伺服器,讓下游裝置可以安全地連線。 設定閘道以接收來自下游裝置的訊息,並將其路由傳送至正確的目的地。
- 建立下游裝置的裝置身分識別,以便向IoT中樞進行驗證。 將下游裝置設定為透過閘道裝置傳送訊息。 如需這些步驟的說明,請參閱向 Azure IoT 中樞驗證下游裝置。
- 將下游裝置連線到閘道裝置並開始傳送訊息。 如需這些步驟的說明,請參閱將下游裝置連線到 Azure IoT Edge 閘道。
若要作為閘道,裝置必須安全地連線到其下游裝置。 Azure IoT Edge 可讓您使用公鑰基礎結構 (PKI) 來設定裝置之間的安全連線。 在此情況下,下游裝置會連線到作為透明閘道的 IoT Edge 裝置。 為了保護安全,下游裝置會檢查閘道裝置的身分識別。 這項檢查有助於防止裝置連線到惡意閘道。
下游裝置可以是任何在 Azure IoT 中樞中建立身分識別的應用程式或平臺。 這類應用程式通常會使用 Azure IoT 裝置 SDK。 下游裝置甚至可以是IoT Edge閘道裝置本身上執行的應用程式。
您可以建立任何憑證基礎結構,來啟用裝置閘道拓撲所需的信任。 在本文中,我們會在IoT中樞使用與 X.509 CA 安全性 相同的憑證設定。 此設定會使用與特定IoT中樞 (IoT 中樞根 CA) 相關聯的 X.509 CA 憑證、使用此 CA 簽署的一系列憑證,以及 IoT Edge 裝置的 CA。
注意
這些文章中使用的根 CA 憑證一詞,指的是 PKI 憑證鏈的最上層授權單位公開憑證,不一定是同步發行憑證授權單位的憑證根憑證。 在許多情況下,它實際上是中繼 CA 公開憑證。
請遵循下列步驟來建立憑證,並將其安裝在閘道的正確位置。 使用任何計算機來產生憑證,然後將憑證複製到您的IoT Edge裝置。
必要條件
您需要已安裝 IoT Edge 的 Linux 或 Windows 裝置。
如果您尚未準備好裝置,請在 Azure 虛擬機中建立一個裝置。 請依照將第一個 IoT Edge 模組部署至虛擬 Linux 裝置中的步驟操作,建立 IoT 中樞、建立虛擬機器,以及設定 IoT Edge 執行階段。
設定 Edge CA 憑證
所有 IoT Edge 閘道都需要安裝 Edge CA 憑證。 IoT Edge 安全性精靈會使用 Edge CA 憑證來簽署工作負載 CA 憑證,進而簽署 IoT Edge 中樞的伺服器憑證。 閘道在連線起始期間,會向下游裝置出具其伺服器憑證。 下游裝置會進行檢查,確定伺服器憑證是積存至根 CA 憑證之憑證鏈的一部分。 此程序可讓下游裝置確認閘道是來自信任的來源。 如需詳細資訊,請參閱瞭解 Azure IoT Edge 如何使用憑證。
根 CA 憑證和 Edge CA 憑證(具有其私鑰)必須位於 IoT Edge 閘道裝置上,並在 IoT Edge 組態檔中設定。 在此情況下, 根 CA 憑證 表示此 IoT Edge 案例的最上層證書頒發機構單位。 網關 Edge CA 憑證和下游裝置憑證必須匯總至相同的根 CA 憑證。
提示
在 IoT Edge 裝置上安裝根 CA 憑證和 Edge CA 憑證的程式也會在管理 IoT Edge 裝置上的憑證中詳細說明。
準備好下列檔案:
- 根 CA 憑證
- 邊緣 CA 憑證
- 裝置 CA 私密金鑰
針對生產環境,請透過您自己的證書頒發機構產生這些檔案。 若處於開發和測試情境,您可以使用示範憑證。
建立示範憑證
如果您沒有自己的憑證授權單位,而且想使用示範憑證,請依照建立示範憑證以測試 IoT Edge 裝置功能中的指示操作,自行建立檔案。 在該頁面上,遵循下列步驟:
- 設定腳本以在裝置上產生憑證。
- 建立根 CA 憑證。 最後,您有根 CA 憑證檔案
<path>/certs/azure-iot-test-only.root.ca.cert.pem
。 - 建立Edge CA 憑證。 最後,您有Edge CA 憑證
<path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem
及其私鑰<path>/private/iot-edge-device-ca-<cert name>.key.pem
。
將憑證複製到裝置
檢查憑證是否符合格式需求。
如果您在不同的電腦上建立憑證,請將憑證複製到IoT Edge裝置。 使用USB磁碟驅動器、 Azure Key Vault 之類的服務,或 安全檔案複製之類的命令。
將檔案移至憑證和金鑰的慣用目錄:
/var/aziot/certs
憑證和/var/aziot/secrets
密鑰。建立憑證和金鑰目錄,並設定權限。 將您的憑證和金鑰儲存在慣用
/var/aziot
的目錄中:/var/aziot/certs
憑證和/var/aziot/secrets
密鑰。# If the certificate and keys directories don't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs sudo mkdir -p /var/aziot/secrets sudo chown aziotks:aziotks /var/aziot/secrets sudo chmod 700 /var/aziot/secrets
變更憑證和金鑰的擁有權和許可權。
# Give aziotcs ownership to certificates # Read and write for aziotcs, read-only for others sudo chown -R aziotcs:aziotcs /var/aziot/certs sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \; # Give aziotks ownership to private keys # Read and write for aziotks, no permission for others sudo chown -R aziotks:aziotks /var/aziot/secrets sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
在裝置上設定憑證
在 IoT Edge 裝置上,開啟設定檔:
/etc/aziot/config.toml
。 如果您在 Windows 上使用適用於 Linux 的 IoT Edge,請使用Connect-EflowVm
PowerShell Cmdlet 連線到 EFLOW 虛擬機。提示
如果設定檔尚不存在於您的裝置上,請使用
/etc/aziot/config.toml.edge.template
作為範本來建立設定檔。找到
trust_bundle_cert
參數。 將這一行取消註解,並將檔案 URI 提供給您裝置上的根 CA 憑證檔案。尋找檔的
[edge_ca]
區段。 將本區段中的三行取消註解,並透過下列屬性的值將檔案 URI 提供給您的憑證和金鑰檔案:- 憑證:Edge CA 憑證
- pk:裝置 CA 私密金鑰
儲存並關閉檔案。
套用您的變更。
sudo iotedge config apply
部署 edgeHub 和路由訊息
下游裝置會將遙測和訊息傳送至閘道裝置,其中IoT Edge中樞模組會將資訊路由傳送至其他模組或IoT中樞。 若要針對此函式準備閘道裝置,請確定:
IoT Edge 中樞模組會部署至裝置。
當您在裝置上安裝IoT Edge時,只會自動啟動一個系統模組:IoT Edge 代理程式。 當您建立裝置的第一個部署時,第二個系統模組和IoT Edge中樞也會啟動。 如果 edgeHub 模組沒有在您的裝置上執行,請為裝置建立部署。
IoT Edge 中樞模組已設定路由,以處理來自下游裝置的傳入訊息。
網關裝置需要路由來處理來自下游裝置的訊息,否則這些訊息無法被處理。 您可以將訊息傳送至閘道裝置上的模組,或直接傳送至 IoT 中樞。
若要部署IoT Edge中樞模組,並設定路由以處理來自下游裝置的傳入訊息,請遵循下列步驟:
在 Azure 入口網站中,前往您的 IoT Hub。
移至 [裝置管理] 功能表下的 [裝置],然後選取要作為閘道使用的 IoT Edge 裝置。
選取 [設定模組]。
在 [ 模組] 頁面上,新增您想要部署至閘道裝置的任何模組。 在本文中,您會專注於設定及部署edgeHub模組,而此模組不需要在此頁面上明確設定。
選取 [下一步: 路由]。
在 [ 路由 ] 頁面上,確定有路由可處理來自下游裝置的訊息。 例如:
將所有訊息從模組或下游裝置傳送至 IoT 中樞的路由:
-
名稱:
allMessagesToHub
-
值:
FROM /messages/* INTO $upstream
-
名稱:
將所有訊息從所有下游裝置傳送至 IoT 中樞的路由:
-
名稱:
allDownstreamToHub
-
值:
FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream
不同於來自 IoT Edge 模組的訊息,來自下游裝置的訊息沒有相關聯的模組識別碼,所以此路由可以正常運作。 使用路由的 WHERE 子句可讓您篩選掉具有該系統屬性的任何訊息。
如需有關訊息路由的詳細資訊,請參閱部署模組及建立路由。
-
名稱:
建立路由或路由之後,請選取 [ 檢閱 + 建立]。
在 [檢閱 + 建立] 頁面上,選取 [建立]。
在閘道裝置上開啟連接埠
標準 IoT Edge 裝置不需要任何輸入連線就能運作,因為與 IoT 中樞的所有通訊都是透過輸出連線來完成。 閘道裝置則不同,因為它們需要接收來自下游裝置的訊息。 如果防火牆位於下游裝置與閘道裝置之間,那麼也必須透過防火牆進行通訊。
若要讓閘道正常運作,至少必須開啟 IoT Edge 中樞所支援的其中一個通訊協定,來自下游裝置的輸入流量才能進入。 支援的通訊協定包括 MQTT、AMQP、HTTPS、透過 WebSocket 的 MQTT,以及透過 WebSocket 的 AMQP。
連接埠 | 通訊協定 |
---|---|
8883 | MQTT |
5671 | AMQP |
443 | HTTPS MQTT+WS AMQP+WS |
下一步
既然您已將IoT Edge裝置設定為透明閘道,請設定下游裝置以信任閘道,並將訊息傳送至該閘道。 在透明網關方案中,請繼續將下游設備驗證至 Azure IoT 中樞,以完成下一步驟。