共用方式為


建立示範憑證來測試 IoT Edge 裝置功能

適用於:IoT Edge 1.5 核取記號 IoT Edge 1.5

重要

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

IoT Edge 裝置需要憑證,才能在運行時間、模組和任何下游裝置之間進行安全通訊。 如果您沒有證書頒發機構單位可建立必要的憑證,請使用示範憑證在測試環境中試用 IoT Edge 功能。 本文說明 IoT Edge 提供用於測試的憑證產生腳本。

警告

這些憑證會在 30 天內到期,您不應該在任何生產案例中使用它們。

在任何計算機上建立憑證,然後將其複製到IoT Edge裝置,或直接在IoT Edge裝置上產生憑證。

必要條件

使用已安裝 Git 的開發電腦。

下載測試憑證指令碼並設定工作目錄

GitHub 上的 IoT Edge 存放庫包含可用來建立示範憑證的憑證產生指令碼。 本節提供在 Windows 或 Linux 上準備指令碼以在電腦上執行的指示。

若要在 Windows 裝置上建立示範憑證,請安裝 OpenSSL,然後複製產生腳本,並將其設定為在 PowerShell 本機執行。

安裝 OpenSSL

在用來產生憑證的裝置上安裝 OpenSSL for Windows。 如果已安裝 OpenSSL,請確定 PATH 環境變數中提供 openssl.exe。

您可以透過不同的方式安裝 OpenSSL:

  • 較容易:下載並安裝任何第三方 OpenSSL 二進位檔,例如,從 SourceForge 上的 OpenSSL 下載並安裝。 將 openssl.exe 的完整路徑加入至您的 PATH 環境變數。

  • 推薦: 下載 OpenSSL 原始程式碼,並在您的裝置上建置二進位檔,或使用 vcpkg。 下列指示會使用 vcpkg 來下載原始程式碼、編譯及安裝 Windows 裝置上的 OpenSSL。

    1. 瀏覽至要安裝 vcpkg 的目錄。 依照指示下載並安裝 vcpkg

    2. 安裝 vcpkg 後,請從 Powershell 提示執行下列命令,以安裝 Windows x64 的 OpenSSL 套件。 安裝通常需要約 5 分鐘時間才能完成。

      .\vcpkg install openssl:x64-windows
      
    3. <vcpkg path>\installed\x64-windows\tools\openssl 新增至您的 PATH 環境變數,讓 openssl.exe 檔案可供叫用。

在 PowerShell 中準備指令碼

Azure IoT Edge git 存放庫包含您可以用來產生測試憑證的指令碼。 在本節中,您會複製 IoT Edge 存放庫並執行腳本。

  1. 在系統管理員模式中開啟PowerShell。

  2. 複製IoT Edge Git存放庫,其具有產生示範憑證的腳本。 使用 git clone 命令或下載 ZIP

    git clone https://github.com/Azure/iotedge.git
    
  3. 建立目錄,並在該處複製憑證腳本。 所有憑證和金鑰檔案都會在此目錄中建立。

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    如果您將存放庫下載為 ZIP,資料夾名稱會是 iotedge-master ,而路徑的其餘部分則相同。

  4. 設定 PowerShell 執行原則以執行腳本。

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. 將腳本所使用的函式匯入 PowerShell 的全域命名空間。

    . .\ca-certs.ps1
    

    PowerShell 視窗會顯示警告,指出此腳本所產生的憑證僅供測試使用,且不應該用於生產案例。

  6. 確認 OpenSSL 已正確安裝,並確定名稱不會與現有的憑證名稱衝突。 如果有問題,指令碼輸出應會說明如何在系統上加以修正。

    Test-CACertsPrerequisites
    

建立根 CA 憑證

執行此腳本以產生根 CA 憑證。 本文中每個步驟都需要此憑證。

使用根 CA 憑證來建立其他示範憑證,以測試 IoT Edge 案例。 您可以使用相同的根 CA 憑證,為多個 IoT Edge 或下游裝置建立示範憑證。

如果您的工作資料夾中已經有根 CA 憑證,請勿建立新的憑證。 建立新的根 CA 憑證會覆寫舊的憑證,以及從舊憑證建立的任何下游憑證都停止運作。 如果您需要多個根 CA 憑證,請在不同的資料夾中管理它們。

  1. 移至您放置憑證產生腳本的工作目錄 wrkdir

  2. 建立根 CA 憑證並簽署一個中繼憑證。 憑證會放在您的工作目錄中。

    New-CACertsCertChain rsa
    

    此腳本會建立數個憑證和金鑰檔案。 當文章要求 根 CA 憑證時,請使用此檔案:

    certs\azure-iot-test-only.root.ca.cert.pem

您需要此憑證,才能為IoT Edge裝置和下游裝置建立更多憑證,如下幾節所述。

建立 IoT Edge 裝置的身分識別憑證

如果您選擇使用 X.509 憑證驗證,IoT Edge 裝置身分識別憑證可用來佈建 IoT Edge 裝置。 如果您使用對稱金鑰向 IoT 中樞或 DPS 進行驗證,則不需要這些憑證,而且您可以略過本節。

不論您是透過 IoT 中樞裝置佈建服務 (DPS) 使用手動佈建或自動佈建,這些憑證都可正常運作。

裝置身分識別憑證會移至 IoT Edge 裝置上設定檔的佈建區段。

  1. 移至具有憑證產生腳本和根 CA 憑證的工作目錄 wrkdir

  2. 使用下列命令建立 IoT Edge 裝置身分識別憑證和私密金鑰:

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    您為此命令輸入的名稱是IoT中樞中IoT Edge裝置的裝置識別碼。

  3. 新的裝置身分識別命令會建立數個憑證和金鑰檔案:

    類型 檔案 說明
    裝置身分識別憑證 certs\iot-edge-device-identity-<device-id>.cert.pem 由稍早產生的中繼憑證簽署。 只包含身分識別憑證。 在設定檔中指定用於 DPS 個別註冊或 IoT 中樞佈建。
    完整鏈結憑證 certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem 含有完整憑證鏈結,包括中繼憑證在內。 在 IoT Edge 的設定檔中指定,以便向 DPS 顯示並用於群組註冊佈建。
    私密金鑰 private\iot-edge-device-identity-<device-id>.key.pem 與裝置身分識別憑證相關聯的私密金鑰。 只要您使用 DPS 或 IoT 中樞的某種憑證驗證 (指紋或 CA),就應在設定檔中指定該憑證。

建立Edge CA 憑證

針對 閘道案例 ,您需要這些憑證,因為 Edge CA 憑證可讓 IoT Edge 裝置向下游裝置驗證其身分識別。 如果您未將任何下游裝置連線到 IoT Edge,請略過本節。

Edge CA 憑證也會為裝置上執行的模組建立憑證,但如果未設定 Edge CA,IoT Edge 運行時間可以建立暫存憑證。 將 Edge CA 憑證放在 IoT Edge 裝置上檔案的 config.toml 區段中。 若要深入了解,請參閱了解 Azure IoT Edge 如何使用憑證

  1. 導覽至具有憑證產生指令碼和根 CA 憑證的工作目錄 wrkdir

  2. 使用下列命令建立 IoT Edge CA 憑證和私密金鑰。 輸入 CA 憑證的名稱。 請勿針對 New-CACertsEdgeDevice 命令,使用組態檔中的主機名參數或 IoT 中樞的裝置識別碼相同的名稱。

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. 此命令會建立數個憑證和金鑰檔案。 將下列憑證和金鑰組複製到 IoT Edge 裝置,並在組態檔中參考它們:

    • certs\iot-edge-device-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-<CA cert name>.key.pem

建立下游裝置憑證

若要為閘道案例設定下游 IoT 裝置,而且想要搭配 IoT 中樞或 DPS 使用 X.509 驗證,則這些是必要憑證。 如果您想要使用對稱金鑰驗證,則不需要為下游裝置建立憑證,而且可以略過本節。

有兩種方式可使用 X.509 憑證來驗證 IoT 裝置:使用自我簽署憑證或使用憑證授權單位 (CA) 簽署的憑證。

  • 針對 X.509 自我簽署驗證 (有時稱為指紋驗證),您必須建立新的憑證以放在 IoT 裝置上。 這些憑證內含會與 IoT 中樞共用以進行驗證的指紋。
  • 針對 X.509 憑證授權單位 (CA) 簽署驗證,您需要在 IoT 中樞或 DPS 中註冊根 CA 憑證,以用來簽署 IoT 裝置的憑證。 只要裝置呈現完整鏈結,任何使用根 CA 憑證或中繼憑證所簽發憑證的裝置,都可以進行驗證。

憑證產生指令碼可協助您建立示範憑證,以測試上述任一驗證案例。

自我簽署憑證

當您使用自我簽署憑證驗證 IoT 裝置時,您必須根據解決方案的根 CA 憑證來建立裝置憑證。 然後,從憑證擷取十六進位「指紋」,以提供給 IoT 中樞。 您的 IoT 裝置也需要其裝置憑證的複本,以便向 IoT 中樞進行驗證。

  1. 導覽至具有憑證產生指令碼和根 CA 憑證的工作目錄 wrkdir

  2. 為下游裝置建立兩個憑證 (主要和次要)。 要使用的簡單命名慣例是建立具有 IoT 裝置名稱的憑證,然後加上主要或次要標籤。 例如:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

    此指令碼命令會建立數個憑證和金鑰檔案。 下列憑證和金鑰組必須複製到下游 IoT 裝置,並在連線至IoT 中樞的應用程式中參考:

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. 從每個憑證擷取 SHA1 指紋 (在 IoT 中樞內容中稱為指紋)。 指紋是 40 個十六進位字元字串。 使用下列 openssl 命令來檢視憑證並尋找指紋:

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

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

CA 簽署憑證

當您使用 CA 簽署憑證驗證 IoT 裝置時,您必須將解決方案的根 CA 憑證上傳至 IoT 中樞。 使用相同的根 CA 憑證來建立要放在 IoT 裝置上的裝置憑證,以便向 IoT 中樞進行驗證。

本節中的憑證適用於 IoT 中樞 X.509 憑證教學課程系列中的步驟。 如需此系列簡介,請參閱了解公開金鑰密碼編譯和 X.509 公開金鑰基礎結構

  1. 將根 CA 憑證檔案從工作目錄 certs\azure-iot-test-only.root.ca.cert.pem 上傳至 IoT 中樞。

  2. 如果未選取自動驗證,請使用 Azure 入口網站提供的程式碼來確認您擁有該根 CA 憑證。

    New-CACertsVerificationCert "<verification code>"
    
  3. 為下游裝置建立憑證鏈結。 使用裝置在 IoT 中樞中註冊的相同裝置識別碼。

    New-CACertsDevice "<device id>"
    

    此指令碼命令會建立數個憑證和金鑰檔案。 下列憑證和金鑰組必須複製到下游 IoT 裝置,並在連線至IoT 中樞的應用程式中參考:

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem