管理 IoT Edge 憑證
適用於: IoT Edge 1.5 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 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,以在相同檔案中以循序方式結合
CERTIFICATE
和PRIVATE KEY
。 - 最後,憑證和私密金鑰可以在名為 PKCS#12 的二進位標記法中編碼,以選擇性密碼進行加密。
副檔名是任意的,而您需要執行 file
命令或檢視檔案以確認類型。 一般而言,檔案會使用下列副檔名慣例:
.cer
是 DER 或 PEM 格式的憑證。.pem
是 PEM 格式的憑證和/或私密金鑰。.pfx
是 PKCS#12 檔案。
IoT Edge需要憑證和私密金鑰才能:
- PEM 格式
- 區分檔案
- 在大部分情況下,具有完整鏈結
如果您從 PKI 提供者取得 .pfx
檔案,則可能是一個檔案中一起編碼的憑證和私密金鑰。 使用 file
命令確認其為 PKCS#12 檔案類型。 您可以使用.pfx
openssl pkcs12 命令,將 PKCS#12 檔案轉換為 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/ 憑證目錄 |
drwxr-xr-x (755) | aziotcs |
/var/aziot/certs/ 中的憑證檔案 |
-wr-r--r-- (644) | aziotcs |
/var/aziot/secrets/ 金鑰目錄 |
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 組態檔中指定其檔案路徑。
向 PKI 提供者取得根 CA 憑證。
檢查憑證是否符合格式需求。
複製 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
在 IoT Edge 組態檔
config.toml
中,尋找 [信任套件組合憑證] 區段。 如果區段遺失,您可以從組態範本檔案複製該區段。提示
如果設定檔尚不存在於您的裝置上,請使用
/etc/aziot/config.toml.edge.template
作為範本來建立設定檔。將
trust_bundle_cert
金鑰設定為憑證檔案位置。trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
套用設定。
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 伺服器進行驗證。 安裝程序:
檢查憑證和私密金鑰檔案是否符合格式需求。
將 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
分別將 IoT Edge 的憑證服務
aziotcs
和金鑰服務aziotks
的擁有權授與憑證和私密金鑰。# 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
在
config.toml
中,尋找要設定憑證類型的相關區段。 例如,您可以搜尋關鍵字cert
。使用組態範本中的範例,設定裝置身分識別憑證或 Edge CA 檔案。 範例模式為:
cert = "file:///var/aziot/certs/my-cert.pem" pk = "file:///var/aziot/secrets/my-private-key.pem"
套用設定
sudo iotedge config apply
若要避免憑證到期時發生錯誤,請記得在憑證到期前手動更新檔案和設定。
範例:使用 PKI 提供者的裝置身分識別憑證檔案
向您的 PKI 提供者要求 TLS 用戶端憑證和私密金鑰。
裝置身分識別憑證需求:
- 標準用戶端憑證延伸模組:extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
- 金鑰識別碼,可協助區分發行具有相同 CN 的 CA ,以便進行 CA 憑證輪替。
- subjectKeyIdentifier = hash
- authorityKeyIdentifier = keyid:always,issuer:always
請確定一般名稱 (CN) 符合已向 DPS 註冊之 IoT 中樞或註冊識別碼的 IoT Edge 裝置識別碼。 例如,在下列裝置身分識別憑證中,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/certd/certs
和 /var/lib/aziot/keyd/keys
資料夾的內容,以移除任何先前產生的憑證,然後套用設定。
更新快速入門 Edge CA
根據預設,IoT Edge 在憑證存留期的 80% 時會自動更新快速入門 Edge CA 憑證。 例如,如果憑證有 90 天的存留期,則 IoT Edge 會在發行後的 72 天自動重新產生 Edge CA 憑證。
若要變更自動更新邏輯,請將下列設定新增至 config.toml
中的 [Edge 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 可以透過安全傳輸伺服器註冊 (EST) 進行自動憑證發行和更新。 建議針對生產環境使用 EST,因為會取代手動憑證管理的需求,這可能會有風險且容易出錯。 您可以全域設定,並覆寫每個憑證類型。
在此案例中,啟動程序憑證和私密金鑰預期會在製造期間長時間存留且可能會安裝在裝置上。 IoT Edge 會針對初始要求使用啟動程序認證向 EST 伺服器進行驗證,以發出後續要求的身分識別憑證,以及向 DPS 或IoT 中樞進行驗證。
取得 EST 伺服器的存取權。 如果您沒有 EST 伺服器,請使用下列其中一個選項來開始測試:
使用教學課程:針對 Azure IoT Edge 設定透過安全傳輸伺服器的註冊中的步驟,建立測試 EST 伺服器。
Microsoft 合作夥伴與 GlobalSign 合作提供示範帳戶。
在 IoT Edge 裝置組態檔
config.toml
中,設定信任根憑證的路徑,以便 IoT Edge 用來驗證 EST 伺服器的 TLS 憑證。 如果 EST 伺服器具有公開信任的根 TLS 憑證,則此步驟是選擇性的。[cert_issuance.est] trusted_certs = [ "file:///var/aziot/root-ca.pem", ]
提供 EST 伺服器的預設 URL。 在
config.toml
中,使用 EST 伺服器的 URL 新增下列區段:[cert_issuance.est.urls] default = "https://example.org/.well-known/est"
若要設定要驗證的 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%"
套用組態變更。
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。 憑證更新會根據憑證類型進行設定。
在
config.toml
中,尋找要設定憑證類型的相關區段。 例如,您可以搜尋關鍵字auto_renew
。使用組態範本中的範例,設定裝置身分識別憑證、Edge CA 或 EST 身分識別憑證。 範例模式為:
[REPLACE_WITH_CERT_TYPE] # ... method = "est" # ... [REPLACE_WITH_CERT_TYPE.auto_renew] rotate_key = true threshold = "80%" retry = "4%"
套用設定
sudo iotege config apply
下表列出 auto_renew
中每個選項的功能:
參數 | 描述 |
---|---|
rotate_key |
控制當 IoT Edge 更新憑證時,是否應該輪替私密金鑰。 |
threshold |
設定 IoT Edge 應該何時開始更新憑證。 可以指定為: - 百分比:介於 0 和 100 的整數,後面接著 % 。 更新會相對於憑證存留期開始。 例如,當設定為 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 的手動 X.509 佈建搭配個別註冊。 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.toml
。iotedge config import
命令可用來協助將組態資訊從舊的位置和語法移轉至新的位置和語法。
下一步
在 IoT Edge 裝置上安裝憑證是在生產環境中部署解決方案之前的必要步驟。 深入了解如何在生產環境中準備部署 IoT Edge 解決方案。