分享方式:


設定 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 中樞相關聯的 X.509 CA 憑證 (IoT 中樞根 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 Key Vault 之類的服務,或使用安全檔案複製等功能。

  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。 如果您有使用 IoT Edge for Linux on Windows,則必須使用 Connect-EflowVm PowerShell Cmdlet 連線到 EFLOW 虛擬機器。

    提示

    如果設定檔尚不存在於您的裝置上,請使用 /etc/aziot/config.toml.edge.template 作為範本來建立設定檔。

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

  3. 尋找檔的 [edge_ca] 區段。 將本區段中的三行取消註解,並透過下列屬性的值將檔案 URI 提供給您的憑證和金鑰檔案:

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

  5. 套用您的變更。

    sudo iotedge config apply
    

部署 edgeHub 和路由訊息

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

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

    第一次在裝置上安裝 IoT Edge 時,只有一個系統模組會自動啟動: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 中樞驗證下游裝置,取得設定透明閘道案例的後續步驟。