管理 IoT Edge 裝置上的憑證

適用于: 是圖示 IoT Edge 1.1 其他版本: IoT Edge 1.2

適用于: 是圖示 IoT Edge 1.2 其他版本: IoT Edge 1.1

所有 IoT Edge 裝置都會使用憑證在執行階段和執行於裝置的任何模組之間,建立安全的連線。 作為閘道運作的 IoT Edge 裝置也會使用這些相同的憑證來連線至其下游裝置。

安裝生產憑證

當您第一次安裝 IoT Edge 並布建您的裝置時,會使用暫時憑證來設定裝置,讓您可以測試服務。 這些暫時性憑證會在90天內到期,或是藉由重新開機電腦來重設。 一旦您移至生產案例,或想要建立閘道裝置,您必須提供您自己的憑證。 本文示範在 IoT Edge 裝置上安裝憑證的步驟。

若要深入瞭解不同類型的憑證與其角色,請參閱 瞭解 Azure IoT Edge 如何使用憑證

注意

本文中使用的「根 CA」一詞是指 IoT 解決方案的憑證鏈最上層授權公開憑證。 您不需要使用同步發佈憑證授權單位單位的憑證根目錄,或組織憑證授權單位單位的根。 在許多情況下,它實際上是中繼 CA 公開憑證。

必要條件

  • IoT Edge 裝置。

    如果您沒有設定 IoT Edge 裝置,可以在 Azure 虛擬機器中建立一個。 遵循其中一個快速入門文章中的步驟, 建立虛擬 Linux 裝置建立虛擬 Windows 裝置

  • 擁有根憑證授權單位 (CA) 憑證,自我簽署或購買自信任的商業憑證授權單位單位,例如巴爾的摩、Verisign、DigiCert 或 GlobalSign。

    如果您還沒有根憑證授權單位,但想要嘗試 IoT Edge 需要生產憑證的功能 (例如閘道案例) 您可以 建立示範憑證來測試 IoT Edge 的裝置功能

建立生產憑證

您應使用自己的憑證授權單位單位來建立下列檔案:

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

在本文中,我們稱之為 根 CA 的是不是組織最上層的憑證授權單位單位。 這是 IoT Edge 案例的最上層憑證授權單位單位,IoT Edge 中樞模組、使用者模組和任何下游裝置都可用來建立彼此之間的信任。

注意

目前,libiothsm 中的限制會防止使用在2038年1月1日或之後過期的憑證。

若要查看這些憑證的範例,請參閱在 管理測試 CA 憑證以取得範例和教學課程中建立示範憑證的腳本。

在裝置上安裝憑證

在 IoT Edge 裝置上安裝您的憑證鏈,並將 IoT Edge 執行時間設定為參考新的憑證。

將三個憑證和金鑰檔案複製到您的 IoT Edge 裝置上。 您可使用如 Azure Key Vault 的服務或類似安全複製通訊協定等功能來移動憑證檔案。 如果您在 IoT Edge 裝置本身產生憑證,您可以略過此步驟,並使用工作目錄的路徑。

如果您在 Windows 上使用適用于 Linux 的 IoT Edge,您必須使用位於 Azure IoT Edge 檔案中的 SSH 金鑰 id_rsa 來驗證主機 OS 與 Linux 虛擬機器之間的檔案傳輸。 您可以使用下列命令來執行已驗證的 SCP:

C:\WINDOWS\System32\OpenSSH\scp.exe -i 'C:\Program Files\Azure IoT Edge\id_rsa' <PATH_TO_SOURCE_FILE> iotedge-user@<VM_IP>:<PATH_TO_FILE_DESTINATION>

注意

您可以透過命令來查詢 Linux 虛擬機器的 IP 位址 Get-EflowVmAddr

如果您使用範例腳本來 建立示範憑證,請將下列檔案複製到您的 IoT-Edge 裝置:

  • 裝置 CA 憑證: <WRKDIR>\certs\iot-edge-device-MyEdgeDeviceCA-full-chain.cert.pem
  • 裝置 CA 私密金鑰: <WRKDIR>\private\iot-edge-device-MyEdgeDeviceCA.key.pem
  • 根 CA: <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
  1. 開啟 IoT Edge 安全性精靈組態檔。

    • Linux 和 Windows 上適用于 Linux 的 IoT Edge: /etc/iotedge/config.yaml

    • 使用 Windows 容器的 windows: C:\ProgramData\iotedge\config.yaml

  2. 將 yaml 中的 憑證 內容設定為憑證和金鑰檔案在 IoT Edge 裝置上的檔案 URI 路徑。 移除 # 憑證屬性之前的字元,以將四行取消批註。 請確定 [ 憑證: ] 行沒有先前的空格,而且嵌套的專案是以兩個空格進行縮排。 例如:

    • Linux 和 Windows 上適用于 Linux 的 IoT Edge:

      certificates:
         device_ca_cert: "file:///<path>/<device CA cert>"
         device_ca_pk: "file:///<path>/<device CA key>"
         trusted_ca_certs: "file:///<path>/<root CA cert>"
      
    • 使用 Windows 容器的 windows:

      certificates:
         device_ca_cert: "file:///C:/<path>/<device CA cert>"
         device_ca_pk: "file:///C:/<path>/<device CA key>"
         trusted_ca_certs: "file:///C:/<path>/<root CA cert>"
      
  3. 在 Linux 裝置上,請確定使用者 iotedge 具有保存憑證之目錄的讀取權限。

  4. 如果您之前已在裝置上使用任何其他憑證進行 IoT Edge,請先刪除下列兩個目錄中的檔案,然後再啟動或重新開機 IoT Edge:

    • Linux 和 Windows 上適用于 Linux 的 IoT Edge: /var/lib/iotedge/hsm/certs/var/lib/iotedge/hsm/cert_keys

    • 使用 Windows 容器的 windows: C:\ProgramData\iotedge\hsm\certsC:\ProgramData\iotedge\hsm\cert_keys

  1. 開啟 IoT Edge 的安全 daemon 設定檔: /etc/aziot/config.toml

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

    trust_bundle_cert = "file:///<path>/<root CA cert>"
    
  3. [edge_ca]在 >gopkg.toml 檔案中尋找區段。 取消批註此區段中的行,並提供憑證的檔案 URI 路徑和 IoT Edge 裝置上的金鑰檔。

    [edge_ca]
    cert = "file:///<path>/<device CA cert>"
    pk = "file:///<path>/<device CA key>"
    
  4. 請確定使用者 iotedge 具有保存憑證之目錄的讀取權限。

  5. 如果您之前已在裝置上使用任何其他憑證進行 IoT Edge,請先刪除下列兩個目錄中的檔案,然後再啟動或重新開機 IoT Edge:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys

自訂憑證存留期

IoT Edge 會在數種情況下自動在裝置上產生憑證,包括:

  • 如果您在安裝和布建 IoT Edge 時未提供自己的生產憑證,IoT Edge 安全性管理員會自動產生 裝置 CA 憑證。 此自我簽署憑證僅適用于開發和測試案例,而非生產環境。 此憑證會在90天后到期。
  • IoT Edge 的安全性管理員也會產生由裝置 CA 憑證簽署的 工作負載 ca 憑證

如需 IoT Edge 裝置上不同憑證之功能的詳細資訊,請參閱 瞭解 Azure IoT Edge 如何使用憑證

針對這兩個自動產生的憑證,您可以選擇在設定檔中設定 auto_generated_ca_lifetime_days 旗標,以設定憑證存留期的天數。

注意

IoT Edge 的安全性管理員會建立第三個自動產生的憑證,也就是 IoT Edge 中樞伺服器憑證。 此憑證一律會有90天的存留期,但會在到期之前自動更新。 Auto_generated_ca_lifetime_days 值不會影響此憑證。

在指定的天數後到期後,必須重新開機 IoT Edge,才能重新產生裝置 CA 憑證。 裝置 CA 憑證將不會自動更新。

  1. 若要將憑證到期設定為預設值90天以外的值,請在設定檔的 [ 憑證 ] 區段中新增值(以天為單位)。

    certificates:
      device_ca_cert: "<ADD URI TO DEVICE CA CERTIFICATE HERE>"
      device_ca_pk: "<ADD URI TO DEVICE CA PRIVATE KEY HERE>"
      trusted_ca_certs: "<ADD URI TO TRUSTED CA CERTIFICATES HERE>"
      auto_generated_ca_lifetime_days: <value>
    

    注意

    目前,libiothsm 中的限制會防止使用在2038年1月1日或之後過期的憑證。

  2. 刪除資料夾的內容 hsm ,以移除任何先前產生的憑證。

    • Linux 和 Windows 上適用于 Linux 的 IoT Edge: /var/lib/iotedge/hsm/certs/var/lib/iotedge/hsm/cert_keys

    • 使用 Windows 容器的 windows: C:\ProgramData\iotedge\hsm\certsC:\ProgramData\iotedge\hsm\cert_keys

  3. 重新開機 IoT Edge 服務。

    • Linux 和 Windows 上適用于 Linux 的 IoT Edge:
    sudo systemctl restart iotedge
    
    • 使用 Windows 容器的 windows:
    Restart-Service iotedge
    
  4. 確認存留期設定。

    • Linux 和 Windows 上適用于 Linux 的 IoT Edge:
    sudo iotedge check --verbose
    
    • 使用 Windows 容器的 windows:
    iotedge check --verbose
    

    檢查「 生產環境就緒:憑證 」檢查的輸出,其中會列出自動產生的裝置 CA 憑證到期之前的天數。

下一步

在生產環境中部署解決方案之前,將憑證安裝在 IoT Edge 裝置上是必要的步驟。 深入瞭解如何 準備在生產環境中部署您的 IoT Edge 解決方案