共用方式為


設定 IoT Edge 裝置作為透明閘道

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

重要

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

本文提供將IoT Edge裝置設定為透明閘道,讓其他裝置與 IoT 中樞 通訊的詳細指示。 本文使用IoT Edge閘道一詞來參考設定為透明閘道的IoT Edge裝置。 如需詳細資訊,請參閱 IoT Edge裝置如何作為閘道使用。

注意

下游裝置無法使用檔案上傳。

設定成功的透明閘道連線有三個一般步驟。 本文涵蓋第一個步驟:

  1. 將閘道裝置設定為伺服器,讓下游裝置可以安全地連線到該裝置。 設定閘道以接收來自下游裝置的訊息,並將其路由傳送至適當的目的地。
  2. 建立下游裝置的裝置身分識別,以便向 IoT 中樞 進行驗證。 設定下游裝置以透過閘道裝置傳送訊息。 如需這些步驟,請參閱驗證下游裝置以 Azure IoT 中樞
  3. 連線 下游裝置到閘道裝置,並開始傳送訊息。 如需這些步驟,請參閱將下游裝置 連線 至 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運行時間。

設定裝置 CA 憑證

所有 IoT Edge 閘道都需要安裝裝置 CA 憑證。 IoT Edge 安全性精靈會使用 IoT Edge 裝置 CA 憑證來簽署工作負載 CA 憑證,進而簽署 IoT Edge 中樞的伺服器憑證。 網關會在啟動連線期間,將其伺服器證書呈現至下游裝置。 下游裝置會檢查以確定伺服器證書是匯總至根 CA 憑證的憑證鏈結的一部分。 此程式可讓下游裝置確認閘道來自受信任的來源。 如需詳細資訊,請參閱 瞭解 Azure IoT Edge 如何使用憑證

顯示閘道憑證設定的螢幕快照。

根 CA 憑證和裝置 CA 憑證(具有其私鑰)必須存在於 IoT Edge 閘道裝置上,並在 IoT Edge 設定檔中設定。 請記住,在此情況下 ,根 CA 憑證 表示此 IoT Edge 案例的最上層證書頒發機構單位。 網關裝置 CA 憑證和下游裝置憑證必須匯總至相同的根 CA 憑證。

提示

在 IoT Edge 裝置上安裝根 CA 憑證和裝置 CA 憑證的程式也會在管理 IoT Edge 裝置上的憑證中詳細說明

備妥下列檔案:

  • 根 CA 憑證
  • 裝置 CA 憑證
  • 裝置 CA 私鑰

針對生產案例,您應該使用自己的證書頒發機構單位產生這些檔案。 針對開發和測試案例,您可以使用示範憑證。

建立示範憑證

如果您沒有自己的證書頒發機構單位,而且想要使用示範憑證,請依照建立示範憑證中的 指示來測試 IoT Edge 裝置功能 來建立檔案。 在該頁面上,您必須採取下列步驟:

  1. 若要開始,請設定腳本以在裝置上產生憑證。
  2. 建立根 CA 憑證。 在這些指示結束時,您將會有根 CA 憑證檔案 <path>/certs/azure-iot-test-only.root.ca.cert.pem
  3. 建立IoT Edge裝置CA憑證。 在這些指示結束時,您會有裝置 CA 憑證 <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem 其私鑰 <path>/private/iot-edge-device-ca-<cert name>.key.pem

將憑證複製到裝置

  1. 檢查憑證是否符合 格式需求

  2. 如果您在不同的電腦上建立憑證,請將其複製到IoT Edge裝置。 您可以使用 USB 磁碟驅動器、Azure 金鑰保存庫 等服務,或搭配安全檔案複製等函式

  3. 將檔案移至憑證和金鑰的慣用目錄。 用於 /var/aziot/certs 憑證和 /var/aziot/secrets 金鑰。

  4. 建立憑證和金鑰目錄,並設定許可權。 您應該將憑證和金鑰儲存至慣用 /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
    
  5. 變更憑證和金鑰的擁有權和許可權。

    # 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 {} \;
    

在裝置上設定憑證

  1. 在您的IoT Edge裝置上,開啟組態檔: /etc/aziot/config.toml。 如果您在 Windows 上使用適用於 Linux 的 IoT Edge,則必須使用 Connect-EflowVm PowerShell Cmdlet 連線到 EFLOW 虛擬機。

    提示

    如果裝置上還沒有組態檔,請使用 /etc/aziot/config.toml.edge.template 作為範本來建立配置檔。

  2. trust_bundle_cert尋找 參數。 取消批注這一行,並將檔案 URI 提供給裝置上的根 CA 憑證檔案。

  3. [edge_ca]尋找檔案的 區段。 取消批注本節中的三行,並將檔案 URI 提供給憑證和密鑰檔案作為下列屬性的值:

    • 憑證:裝置 CA 憑證
    • pk:裝置 CA 私鑰
  4. 儲存並關閉檔案。

  5. 套用您的變更。

    sudo iotedge config apply
    

部署edgeHub和路由訊息

下游裝置會將遙測和訊息傳送至閘道裝置,其中 IoT Edge 中樞模組負責將資訊路由傳送至其他模組或 IoT 中樞。 若要準備此函式的閘道裝置,請確定:

  • IoT Edge 中樞模組會部署到裝置。

    當您第一次在裝置上安裝IoT Edge時,只會自動啟動一個系統模組:IoT Edge 代理程式。 建立裝置的第一個部署之後,第二個系統模組和IoT Edge中樞也會啟動。 如果edgeHub模組未在您的裝置上執行,請為您的裝置建立部署。

  • IoT Edge 中樞模組已設定路由,以處理來自下游裝置的傳入訊息。

    網關裝置必須有路由,才能處理來自下游裝置的訊息,否則不會處理這些訊息。 您可以將訊息傳送至閘道裝置上的模組,或直接傳送至 IoT 中樞。

若要部署IoT Edge中樞模組,並使用路由進行設定以處理來自下游裝置的傳入訊息,請遵循下列步驟:

  1. 在 Azure 入口網站中,瀏覽至您的 IoT 中樞。

  2. 移至 [裝置管理] 功能表下的 [裝置],然後選取您想要作為閘道使用的 IoT Edge 裝置。

  3. 選取 [設定模組]

  4. 在 [ 模組 ] 頁面上,您可以新增任何想要部署至閘道裝置的模組。 基於本文的目的,我們著重於設定和部署edgeHub模組,而此模組不需要在此頁面上明確設定。

  5. 選取 [ 下一步:路由]。

  6. 在 [ 路由 ] 頁面上,確定有路由可處理來自下游裝置的訊息。 例如:

    • 傳送所有訊息的路由,無論是從模組還是從下游裝置傳送至 IoT 中樞:

      • 名稱allMessagesToHub
      • FROM /messages/* INTO $upstream
    • 將所有下游裝置的所有訊息傳送至 IoT 中樞 的路由:

      • 名稱allDownstreamToHub
      • FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

      此路由的運作方式是,不同於來自IoT Edge模組的訊息,來自下游裝置的訊息沒有與其相關聯的模組標識符。 使用路由的 WHERE 子句可讓我們篩選掉具有該系統屬性的任何訊息。

      如需訊息路由的詳細資訊,請參閱 部署模組和建立路由

  7. 建立路由或路由之後,請選取 [ 檢閱 + 建立]。

  8. 在 [檢閱 + 建立] 頁面上,選取 [建立]

在閘道裝置上開啟埠

標準 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 中樞 設定透明網關案例中的後續步驟。