向 Azure IoT 中樞驗證下游裝置

適用於: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 中樞 身分識別。 本文會逐步解說驗證下游裝置以 IoT 中樞 的選項,然後示範如何宣告網關聯機。

注意

下游裝置會將數據直接發出至因特網或閘道裝置(已啟用IoT Edge或未啟用IoT Edge)。 子裝置可以是巢狀拓撲中的下游裝置或閘道裝置。

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

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

下游裝置可使用下列三種方法的其中一種向 IoT 中樞進行驗證:對稱金鑰 (有時稱為共用存取金鑰)、X.509 自我簽署憑證或 X.509 憑證授權單位 (CA) 簽署憑證。 驗證步驟類似於使用 IoT 中樞設定任何非 IoT 邊緣裝置的步驟,在聲明閘道關係時略有不同。

不支援使用 Azure IoT 中樞 裝置布建服務 (DPS) 自動布建下游裝置。

必要條件

完成設定IoT Edge裝置以作為透明閘道中的步驟。

如果您使用 X.509 驗證,您將會產生下游裝置的憑證。 擁有可供再次使用的透明網關發行項所使用的相同根 CA 憑證和憑證產生腳本。

本文參考數點的 閘道主機名 。 閘道主機名是在IoT Edge閘道裝置上組態檔的主機名參數中宣告。 其會在下游裝置的 連接字串 中參考。 網關主機名必須使用 DNS 或下游裝置上的主機檔案專案,解析為 IP 位址。

使用 IoT 中樞 註冊裝置

選擇您希望下游裝置使用 IoT 中樞 進行驗證的方式:

  • 對稱金鑰驗證:IoT 中樞 建立您在下游裝置上放置的密鑰。 當裝置驗證時,IoT 中樞 會檢查兩個金鑰是否相符。 您不需要建立其他憑證,即可使用對稱密鑰驗證。

    如果您要在開發或測試案例中測試閘道,這個方法可更快速地開始使用。

  • X.509 自我簽署驗證:有時稱為指紋驗證,因為您與 IoT 中樞 共用裝置 X.509 憑證的指紋。

    針對生產案例中的裝置,建議使用憑證驗證。

  • X.509 CA 簽署的驗證:將根 CA 憑證上傳至 IoT 中樞。 當裝置出示其 X.509 憑證進行驗證時,IoT 中樞 會檢查它是否屬於由相同根 CA 憑證簽署的信任鏈結。

    針對生產案例中的裝置,建議使用憑證驗證。

對稱金鑰驗證

對稱金鑰驗證 (或共用存取金鑰驗證) 是向 IoT 中樞進行驗證的最簡單方式。 使用對稱金鑰驗證,base64 編碼金鑰會與 IoT 中樞中的 IoT 裝置識別碼建立關聯。 您會在 IoT 應用程式中包含該金鑰,讓裝置可在連線到 IoT 中樞時呈現該金鑰。

使用 Azure 入口網站、Azure CLI 或適用於 Visual Studio Code 的 IoT 延伸模組,在 IoT 中樞中新增 IoT 裝置。 請記住,下游裝置必須在 IoT 中樞 中識別為一般IoT裝置,而不是IoT Edge裝置。

當建立新的裝置身分識別時,請提供下列資訊:

  • 建立裝置的識別碼。

  • 選取 [對稱金鑰] 作為 [驗證類型]。

  • 選取 [設定父裝置 ],然後選取此下游裝置將透過連線的IoT Edge閘道裝置。 您稍後一律可以變更父代。

    如何在 Azure 入口網站 中使用對稱密鑰授權建立裝置識別碼的螢幕快照。

    注意

    針對使用對稱密鑰驗證的下游裝置,設定用來作為選擇性步驟的父裝置。 不過,從IoT Edge 1.1.0版開始,每個下游裝置都必須指派給父裝置。

    您可以將環境變數 AuthenticationMode 設定為 CloudAndScope,將 IoT Edge 中樞設定回先前的行為。

您也可以使用適用於 Azure CLIIoT 擴充功能來完成相同的作業。 下列範例使用 az iot hub device-identity 命令來建立具有對稱密鑰驗證的新 IoT 裝置,並指派父裝置:

az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}

提示

您可以使用 列出裝置屬性,包括裝置範圍 az iot hub device-identity list --hub-name {iothub name}

接下來,擷取和修改 連接字串,讓您的裝置知道要透過其網關聯機。

X.509 自我簽署驗證

針對 X.509 自我簽署驗證,有時稱為指紋驗證,您必須建立憑證以放在下游裝置上。 這些憑證內含會與 IoT 中樞共用以進行驗證的指紋。

  1. 使用 CA 憑證,為下游裝置建立兩個裝置憑證(主要和次要憑證)。

    如果您沒有證書頒發機構單位可建立 X.509 憑證,您可以使用 IoT Edge 示範憑證腳本來 建立下游裝置憑證。 請遵循建立自我簽署憑證的步驟。 使用為閘道裝置產生憑證的相同根 CA 憑證。

    如果您建立自己的憑證,請確定裝置憑證的主體名稱已設定為您在 Azure IoT 中樞 中註冊 IoT 裝置時所使用的裝置識別碼。 驗證需要此設定。

  2. 從每個憑證擷取 SHA1 指紋 (在 IoT 中樞介面中稱為指紋),這是 40 個十六進位字元字串。 使用下列 openssl 命令來檢視憑證並尋找指紋:

    • Windows:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
      
    • Linux:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
      

    執行此命令兩次,一次用於主要憑證,一次用於次要憑證。 當您使用自我簽署 X.509 憑證註冊新的 IoT 裝置時,您會為這兩個憑證提供指紋。

  3. 在 Azure 入口網站中巡覽至 IoT 中樞,然後使用下列值建立新的 IoT 裝置身分識別:

    • 提供符合裝置憑證主體名稱的裝置標識碼
    • 選取 [X.509 自我簽署 ] 作為驗證類型。
    • 貼上從裝置的主要和次要憑證所複製十六進位字串。
    • 選取 [設定父裝置 ],然後選擇此下游裝置將透過連線的IoT Edge閘道裝置。 您稍後一律可以變更父代。

    顯示如何在 Azure 入口網站 中使用 X.509 自我簽署授權建立裝置識別碼的螢幕快照。

  4. 將主要和次要裝置憑證及其密鑰複製到下游裝置上的任何位置。 同時移動產生閘道裝置憑證和下游裝置憑證的共用根 CA 憑證複本。

    您將在連線至 IoT 中樞 下游裝置上的任何應用程式中參考這些憑證檔案。 您可以使用 Azure 金鑰保存庫 之類的服務,或安全複製通訊協定之類的函式來移動憑證檔案。

  5. 根據您的慣用語言,檢閱如何在IoT應用程式中參考 X.509 憑證的範例:

您也可以使用適用於 Azure CLIIoT 擴充功能來完成相同的裝置建立作業。 下列範例會使用 az iot hub device-identity 命令來建立具有 X.509 自我簽署驗證的新 IoT 裝置,並指派父裝置:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

提示

您可以使用 列出裝置屬性,包括裝置範圍 az iot hub device-identity list --hub-name {iothub name}

接下來,擷取和修改 連接字串,讓您的裝置知道要透過其網關聯機。

X.509 CA 簽署的驗證

針對 X.509 證書頒發機構單位 (CA) 簽署的驗證,您需要在 IoT 中樞 中註冊的根 CA 憑證,您用來簽署下游裝置的憑證。 所有使用由根 CA 憑證或其任何中繼憑證所發出憑證的裝置,都可進行驗證。

本節是以 IoT 中樞 X.509 憑證教學課程系列為基礎。 如需此系列簡介,請參閱 瞭解公鑰密碼編譯和 X.509 公鑰基礎結構

  1. 使用 CA 憑證,為下游裝置建立兩個裝置憑證(主要和次要憑證)。

    如果您沒有證書頒發機構單位可建立 X.509 憑證,您可以使用 IoT Edge 示範憑證腳本來 建立下游裝置憑證。 請遵循建立 CA 簽署憑證的步驟。 使用為閘道裝置產生憑證的相同根 CA 憑證。

  2. 遵循在 Azure IoT 中樞設定 X.509 安全性的示範擁有證明一節中的指示操作。 在該節中,您將執行下列步驟:

    1. 上傳根 CA 憑證。 如果您使用示範憑證,則根 CA 是 <path>/certs/azure-iot-test-only.root.ca.cert.pem

    2. 確認擁有該根 CA 憑證。

  3. 依照在 Azure IoT 中樞設定 X.509 安全性的 IoT 中樞 區段中建立裝置中的指示操作。 在該節中,您將執行下列步驟:

    1. 新增裝置。 提供裝置識別碼小寫名稱,然後選擇驗證類型 X.509 CA 簽署

    2. 設定父裝置。 選取 [設定父裝置],然後選擇將提供連線至 IoT 中樞 的 IoT Edge 閘道裝置。

  4. 為下游裝置建立憑證鏈結。 使用上傳至 IoT 中樞的相同根 CA 憑證來建立此鏈結。 使用在入口網站中為裝置身分識別所提供的相同小寫裝置識別碼。

  5. 將裝置憑證和金鑰複製到下游裝置上的任何位置。 同時移動產生閘道裝置憑證和下游裝置憑證的共用根 CA 憑證複本。

    您將在連線至 IoT 中樞 下游裝置上的任何應用程式中參考這些檔案。 您可以使用 Azure 金鑰保存庫 之類的服務,或安全複製通訊協定之類的函式來移動憑證檔案。

  6. 根據您的慣用語言,檢閱如何在IoT應用程式中參考 X.509 憑證的範例:

您也可以使用適用於 Azure CLIIoT 擴充功能來完成相同的裝置建立作業。 下列範例使用 az iot hub device-identity 命令來建立具有 X.509 CA 簽署驗證的新 IoT 裝置,並指派父裝置:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_ca

提示

您可以使用 列出裝置屬性,包括裝置範圍 az iot hub device-identity list --hub-name {iothub name}

接下來,擷取和修改 連接字串,讓您的裝置知道要透過其網關聯機。

擷取和修改 連接字串

在入口網站中建立 IoT 裝置身分識別之後,即可擷取其主要或次要金鑰。 其中一個金鑰必須包含在應用程式用來與 IoT 中樞 通訊的 連接字串 中。 針對對稱金鑰驗證,IoT 中樞會在裝置詳細資料中提供完整格式的連接字串,以方便使用。 您必須將閘道裝置的額外資訊新增至連接字串。

下游裝置的 連線 字串需要下列元件:

  • 與裝置連線的 IoT 中樞:Hostname={iothub name}.azure-devices.net
  • 向中樞註冊的裝置識別碼:DeviceID={device ID}
  • 驗證方法,無論是對稱密鑰還是 X.509 憑證
    • 如果使用對稱金鑰驗證,請提供主要或次要金鑰: SharedAccessKey={key}
    • 如果使用 X.509 憑證驗證,請提供旗標: x509=true
  • 裝置連線所透過的閘道裝置。 提供IoT Edge閘道裝置組態檔中的主機名稱值:GatewayHostName={gateway hostname}

總之,完整的連接字串如下所示:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

或:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice

由於父/子關聯性,您可以直接呼叫閘道作為連線主機來簡化 連接字串。 例如:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

您將在透明網關係列的下一篇文章中使用此修改過的 連接字串。

下一步

此時,您已向IoT中樞註冊IoT Edge裝置,並設定為透明閘道。 您也有向IoT中樞註冊的下游裝置,並指向其閘道裝置。

接下來,您必須將下游裝置設定為信任閘道裝置,並安全地連線到該裝置。 繼續閱讀透明網關係列中的下一篇文章,連線 下游裝置至 Azure IoT Edge 閘道