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

適用于: IoT Edge 1.4 checkmark IoT Edge 1.4

重要

支援的版本是 IoT Edge 1.4。 如果您是舊版,請參閱更新 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 如何使用憑證

Screenshot that shows the gateway certificate setup.

根 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。

Port 通訊協定
8883 MQTT
5671 AMQP
443 HTTPS
MQTT+WS
AMQP+WS

下一步

既然您已將 IoT Edge 裝置設定為透明閘道,您必須將下游裝置設定為信任閘道,並將訊息傳送至該閘道。 繼續進行驗證 下游裝置,以Azure IoT 中樞 設定透明閘道案例中的後續步驟。