管理 IoT Edge 憑證

適用於:IoT Edge 1.4 複選標記 IoT Edge 1.4

重要

支援的版本是 IoT Edge 1.4。 如果您是舊版,請參閱更新 IoT Edge

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

注意

本文中使用的根 CA 一詞是指 IoT 解決方案憑證鏈結中最上層授權單位的憑證。 您不需要使用聯合證書頒發機構單位的憑證跟證書,或組織證書頒發機構單位的跟證書。 通常是中繼 CA 憑證。

必要條件

  • 您應該熟悉瞭解 Azure IoT Edge 如何使用憑證的概念,特別是 IoT Edge 如何使用憑證。

  • IoT Edge 裝置。

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

  • 能夠在組態範本之後編輯IoT Edge組態檔config.toml

  • config.toml如果您不是以範本為基礎,請開啟範本,並使用批注的指引,在範本結構之後新增組態區段。

  • 如果您有尚未設定的新 IoT Edge 安裝,請複製範本以初始化組態。 如果您有現有的組態,請勿使用此命令。 它會覆寫檔案。

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

格式需求

提示

  • 憑證可以編碼為稱為 DER 的二進位表示法(可辨別編碼規則),或稱為 PEM 的文字表示法(隱私權增強郵件)。 PEM 格式的 -----BEGIN CERTIFICATE----- 標頭後面接著 base64 編碼的 DER,後面接著頁 -----END CERTIFICATE----- 尾。
  • 與憑證類似,私鑰可以編碼為二進位 DER 或文字表示 PEM。
  • 由於 PEM 已劃定,因此也可以建構 PEM,以在相同檔案中循序結合 CERTIFICATEPRIVATE KEY
  • 最後,憑證和私鑰可以在名為 PKCS#12 的二進制表示法中一起編碼,該二進位表示法是使用選擇性密碼加密。

擴展名是任意的,您必須執行 file 命令或檢視檔案驗證類型。 一般而言,檔案會使用下列擴充慣例:

  • .cer 是 DER 或 PEM 表體中的憑證。
  • .pem 是憑證、私鑰或 PEM 格式的兩者。
  • .pfx 是 PKCS #12 檔案。

IoT Edge 需要憑證和私鑰:

  • PEM 格式
  • 個別檔案
  • 在大部分情況下,使用完整鏈結

如果您從 PKI 提供者取得檔案 .pfx ,可能是一個檔案中一起編碼的憑證和私鑰。 使用 file 命令確認其為 PKCS#12 檔類型。 您可以使用 openssl pkcs12 命令,將 PKCS#12 .pfx 檔案轉換成 PEM 檔案

如果您的 PKI 提供者提供檔案 .cer ,它可能包含與 .pfx相同的憑證,或可能是 PKI 提供者的發行(跟證書) 憑證。 若要確認,請使用 openssl x509 命令檢查檔案。 如果是發行憑證:

  • 如果是 DER (二進位) 格式,請使用 openssl x509 -in cert.cer -out cert.pem將它轉換成 PEM。
  • 使用 PEM 檔案作為信任套件組合。 如需信任套件組合的詳細資訊,請參閱下一節。

重要

您的 PKI 基礎結構應該支援 RSA-2048 位金鑰和 EC P-256 金鑰。 例如,您的 EST 伺服器應該支援這些金鑰類型。 您可以使用其他金鑰類型,但我們只測試 RSA-2048 位密鑰和 EC P-256 金鑰。

權限需求

下表列出 IoT Edge 憑證所需的檔案和目錄許可權。 憑證的慣用目錄是 /var/aziot/certs//var/aziot/secrets/ 金鑰。

檔案或目錄 權限 負責人
/var/aziot/certs/ certificates 目錄 drwxr-xr-x (755) aziotcs
中的憑證檔案 /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ keys 目錄 drwx------ (700) aziotks
中的主要檔案 /var/aziot/secrets/ -wr------- (600) aziotks

若要建立目錄,請設定許可權,並設定擁有者,請執行下列命令:

# 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

# 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 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

具有正確擁有權和權限的清單輸出類似於下列輸出:

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

管理受信任的根 CA (信任套件組合)

使用自我簽署證書頒發機構單位 (CA) 憑證作為 IoT Edge 的信任跟證書,模組稱為 信任套件組合。 信任套件組合可供IoT Edge和模組與伺服器通訊。 若要設定信任套件組合,請在IoT Edge組態檔中指定其檔案路徑。

  1. 從 PKI 提供者取得根 CA 憑證。

  2. 檢查憑證是否符合 格式需求

  3. 複製 PEM 檔案,並提供 IoT Edge 的憑證服務存取權。 例如,使用 /var/aziot/certs 目錄:

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. 在 IoT Edge 組態檔 config.toml中,尋找 [信任套件組合憑證 ] 區段。 如果區段遺失,您可以從組態範本檔案複製它。

    提示

    如果裝置上還沒有組態檔,請使用 /etc/aziot/config.toml.edge.template 作為範本來建立配置檔。

  5. trust_bundle_cert 金鑰設定為憑證檔案位置。

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. 套用設定。

    sudo iotedge config apply
    

將根 CA 安裝至 OS 憑證存儲

將憑證安裝至信任套件組合檔案可讓容器模組使用,但無法裝載 Azure 裝置更新或 Defender 等模組。 如果您使用主機層級元件或遇到其他 TLS 問題,也請將根 CA 憑證安裝到作業系統證書存儲:

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

匯入憑證和私鑰檔案

IoT Edge 可以使用現有的憑證和私鑰檔案來驗證或證明 Azure、發出新的模組伺服器憑證,以及向 EST 伺服器進行驗證。 安裝程序:

  1. 檢查憑證和私鑰檔案是否符合 格式需求

  2. 將 PEM 檔案複製到 IoT Edge 裝置,其中 IoT Edge 模組可以存取。 例如, /var/aziot/ 目錄。

    # 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
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. 將擁有權分別授與IoT Edge的憑證服務和金鑰服務aziotcsaziotks給憑證和私鑰。

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. 在 中 config.toml,尋找要設定之憑證類型的相關區段。 例如,您可以搜尋 關鍵詞 cert

  5. 使用組態範本中的範例,設定裝置身分識別憑證或Edge CA檔案。 範例模式為:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. 套用設定

    sudo iotedge config apply
    

若要防止憑證過期時發生錯誤,請記得在憑證到期前手動更新檔案和組態。

範例:使用來自 PKI 提供者的裝置身分識別憑證檔案

向 PKI 提供者要求 TLS 用戶端憑證和私鑰。

裝置身分識別憑證需求:

  • 標準用戶端憑證延伸模組:extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • 用來協助區分 CA 憑證輪替的相同 CN 發行 CA 的金鑰標識碼。
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always

確定一般名稱 (CN) 符合以 IoT 中樞 註冊的 IoT Edge 裝置識別碼,或使用 DPS 註冊標識碼。 例如,在下列裝置身分識別憑證中, Subject: CN = my-device 是必須相符的重要欄位。

裝置身分識別憑證範例:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

提示

若要在不存取 PKI 所提供的憑證檔案的情況下進行測試,請參閱 建立示範憑證來測試裝置功能 ,以產生短期的非生產裝置身分識別憑證和私鑰。

使用 IoT 中樞 布建時的組態範例:

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

使用 DPS 佈建時的組態範例:

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

手動憑證管理的額外負荷可能會有風險且容易出錯。 針對生產環境,建議使用IoT Edge搭配自動憑證管理。

管理 Edge CA

Edge CA 有兩種不同的模式:

  • 快速入門 是預設行為。 快速入門適用於測試,不適用於生產環境。
  • 生產 模式需要您為 Edge CA 憑證和私鑰提供您自己的來源。

快速入門 Edge CA

為了協助開始使用,IoT Edge 預設會在第一次啟動時自動產生 Edge CA 憑證 。 此自我簽署憑證僅適用於開發和測試案例,而非生產環境。 根據預設,憑證會在 90 天后到期。 可以設定到期日。 此行為稱為 快速入門Edge CA

快速入門 Edge CA 可讓 edgeHub 和其他 IoT Edge 模組在 IoT Edge 第一次安裝且沒有設定的情況下擁有有效的伺服器證書。 因為模組或下游裝置需要建立安全的通道,因此需要edgeHub憑證。 若沒有快速入門Edge CA,開始使用會相當困難,因為您需要從 PKI 提供者或之類的 openssl工具提供有效的伺服器證書。

重要

請勿將快速入門Edge CA用於生產環境,因為其中本機產生的憑證未連線到 PKI。

憑證型身分識別的安全性衍生自運作良好的 PKI(基礎結構),其中憑證 (檔) 只是元件。 運作良好的 PKI 可讓安全策略的定義、應用程式、管理和強制執行,包括但不限於憑證發行、撤銷和生命週期管理。

自定義快速入門 Edge CA 的存留期

若要將憑證到期設定為預設 90 天以外的專案,請將值以天為單位新增至 組態檔的 Edge CA 憑證 (快速入門) 區段。

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

刪除 和 /var/lib/aziot/keyd/keys 資料夾的內容/var/lib/aziot/certd/certs,以移除任何先前產生的憑證,然後套用設定。

更新快速入門 Edge CA

根據預設,當憑證存留期為 80% 時,IoT Edge 會自動更新快速入門 Edge CA 憑證。 例如,如果憑證有90天的存留期,IoT Edge會在發行后72天內自動重新產生Edge CA 憑證。

若要變更自動更新邏輯,請將下列設定新增至 中的config.tomlEdge CA 憑證區段。 例如:

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

生產中的Edge CA

進入生產案例或想要建立閘道裝置之後,就無法再使用快速入門Edge CA。

其中一個選項是提供您自己的憑證,並手動管理它們。 不過,若要避免有風險且容易出錯的手動憑證管理程式,請盡可能使用 EST 伺服器。

警告

Edge CA 憑證的通用名稱 (CN) 不符合裝置組態檔 config.toml 中所定義的裝置主機名參數,或 IoT 中樞 中註冊的裝置標識符。

規劃Edge CA更新

當 Edge CA 憑證更新時,會重新產生其所簽發的所有憑證,例如模組伺服器證書。 若要為模組提供新的伺服器證書,IoT Edge 會在 Edge CA 憑證更新時重新啟動所有模組。

若要將模組重新啟動的潛在負面影響降到最低,請計劃在特定時間更新Edge CA 憑證, threshold = "10d"並通知解決方案的停機時間。

範例:使用來自 PKI 提供者的 Edge CA 憑證檔案

向 PKI 提供者要求下列檔案:

  • PKI 的根 CA 憑證
  • 發行/CA 憑證和相關聯的私鑰

若要讓發行 CA 憑證成為 Edge CA,它必須具有下列延伸模組:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

結果 Edge CA 憑證的範例:

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

一旦您收到最新的檔案, 請更新信任套件組合

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

然後,將 IoT Edge 設定為使用憑證和私鑰檔案:

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

如果您之前已在裝置上使用任何其他 IoT Edge 憑證,請刪除 中的/var/lib/aziot/certd/certs檔案和與憑證相關聯的私鑰(而非所有金鑰)。/var/lib/aziot/keyd/keys IoT Edge 會使用您提供的新 CA 憑證重新建立它們。

此方法會要求您在憑證到期時手動更新檔案。 若要避免此問題,請考慮使用 EST 進行自動管理。

使用 EST 伺服器的自動憑證管理

IoT Edge 可以與 註冊 over Secure Transport (EST) 伺服器 進行介面,以自動發行和更新憑證。 建議將 EST 用於生產環境,因為它會取代手動憑證管理的需求,這可能會有風險且容易出錯。 它可以全域設定,並覆寫每個憑證類型。

在此案例中,啟動程序憑證和私鑰預期會在製造期間長期安裝在裝置上。 IoT Edge 會使用啟動程式認證向 EST 伺服器進行驗證,以要求發出後續要求的身分識別憑證,以及向 DPS 或 IoT 中樞 進行驗證。

  1. 取得 EST 伺服器的存取權。 如果您沒有 EST 伺服器,請使用下列其中一個選項來開始測試:

  2. 在 IoT Edge 裝置設定檔 config.toml中,設定 IoT Edge 用來驗證 EST 伺服器 TLS 憑證的信任跟證書路徑。 如果 EST 伺服器具有公開信任的跟 TLS 憑證,則此步驟是選擇性的。

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. 提供EST伺服器的預設URL。 在 中 config.toml,使用 EST 伺服器的 URL 新增下列區段:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. 若要設定驗證的 EST 憑證,請使用憑證和私鑰的路徑新增下列區段:

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. 套用設定變更。

    sudo iotedge config apply
    

中的 [cert_issuance.est.identity_auto_renew] 設定會在下一節中討論。

使用者名稱和密碼驗證

如果無法使用憑證向 EST 伺服器進行驗證,您可以改用共用密碼或使用者名稱和密碼。

[cert_issuance.est.auth]
username = "username"
password = "password"

設定自動更新參數

IoT Edge 沒有手動管理憑證檔案,而是具備在到期前取得及更新憑證的內建功能。 憑證更新需要IoT Edge可以管理的發行方法。 透過安全傳輸 (EST) 伺服器的註冊是一種發行方法,但 IoT Edge 預設也可以自動更新 快速入門 CA。 憑證更新會根據憑證類型進行設定。

  1. 在 中 config.toml,尋找要設定之憑證類型的相關區段。 例如,您可以搜尋 關鍵詞 auto_renew

  2. 使用組態範本中的範例,設定裝置身分識別憑證、Edge CA 或 EST 身分識別憑證。 範例模式為:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. 套用設定

    sudo iotege config apply
    

下表列出 中 auto_renew 每個選項的功能:

參數 描述
rotate_key 控制當 IoT Edge 更新憑證時,是否應該輪替私鑰。
threshold 設定 IoT Edge 何時應該開始更新憑證。 它可以指定為:
- 百分比:和 100 之間的0整數,%後面接著 。 更新會相對於憑證存留期開始。 例如,當設定為 80%時,有效期為 100 天的憑證會在到期前 20 天開始更新。
- 絕對時間:整數後面 min 接著 (分鐘) 或 day (天)。 更新會相對於憑證到期時間開始。 例如,當設定為 4day 4 天或 10min 10 分鐘時,憑證會在到期前開始更新。 若要避免非預期的設定錯誤,其中 threshold 大於憑證存留期,建議您盡可能改用 百分比
retry 控制在失敗時應重試更新的頻率。 如同 threshold,同樣地,也可以使用相同格式,將它指定為 百分比絕對時間

範例:使用EST自動更新裝置身分識別憑證

若要使用 EST 和 IoT Edge 進行自動裝置身分識別憑證發行和更新,建議用於生產環境,IoT Edge 必須布建為 DPS CA 型註冊群組的一部分。 例如:

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

當發行方法設定為 EST 時,必須啟用 Edge CA 的自動更新。 必須避免 Edge CA 到期,因為它會中斷許多 IoT Edge 功能。 如果情況需要完全控制Edge CA 憑證生命週期,請改用 手動Edge CA管理方法

請勿使用 EST 或其他auto_renew佈建方法,包括手動布建 IoT 中樞 和具有個別註冊的 DPS。 當憑證更新時,IoT Edge 無法更新 Azure 中的憑證指紋,這可防止 IoT Edge 重新連線。

範例:使用 EST 的自動Edge CA 管理

針對生產環境使用EST自動Edge CA發行和更新。 設定 EST 伺服器之後,您可以使用全域設定,或覆寫它,類似於下列範例:

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

模組伺服器證書

Edge 精靈會發出模組伺服器和身分識別憑證,以供Edge模組使用。 Edge 模組仍須視需要更新其身分識別和伺服器憑證的責任。

續約

伺服器證書可能會從 Edge CA 憑證發行。 不論發行方法為何,模組都必須更新這些憑證。 如果您開發自定義模組,則必須在模組中實作更新邏輯。

edgeHub 模組支持憑證更新功能。 您可以使用下列環境變數來 設定 edgeHub 模組伺服器憑證更新:

  • ServerCertificateRenewAfterInMs:設定 edgeHub 伺服器證書更新時,不論憑證到期時間為何,以毫秒為單位的持續時間。
  • MaxCheckCertExpiryInMs:設定 edgeHub 服務檢查 edgeHub 伺服器證書到期時的毫秒數。 如果已設定變數,則不論憑證到期時間為何,都會進行檢查。

如需環境變數的詳細資訊,請參閱 EdgeHub和EdgeAgent環境變數

1.2 和更新版本中的變更

  • 裝置 CA 憑證 已重新命名為 Edge CA 憑證
  • 工作負載 CA 憑證 已被取代。 現在,IoT Edge 安全性管理員會直接從 Edge CA 憑證產生 IoT Edge 中樞 edgeHub 伺服器證書,而不需要它們之間的中繼工作負載 CA 憑證。
  • 預設群組態檔具有新的名稱和位置,預設會從 /etc/iotedge/config.yaml/etc/aziot/config.tomliotedge config import命令可用來協助將組態資訊從舊位置和語法移轉至新的設定資訊。

下一步

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