适用范围:IoT Edge 1.5 checkmark IoT Edge 1.5
重要
IoT Edge 1.5 LTS 是受支持的版本。 IoT Edge 1.4 LTS 于 2024 年 11 月 12 日终止。 如果使用的是早期版本,请参阅 Update IoT Edge。
所有IoT Edge设备都使用证书在运行时与设备上运行的任何模块之间创建安全连接。 IoT Edge充当网关的设备也使用这些相同的证书连接到其下游设备。
注意事项
整篇文章中使用的术语“根 CA”是指用于您的 IoT 解决方案的证书链中位于最顶层的权威机构的证书。 无需使用共享的证书颁发机构的根证书,也无需使用组织的证书颁发机构的根证书。 通常情况下,它实际上是中间 CA 证书。
先决条件
熟悉了解Azure IoT Edge如何使用证书中的概念,特别是IoT Edge如何使用证书。
物联网边缘设备。
如果没有设置IoT Edge设备,可以在Azure虚拟机中创建一个设备。 按照以下快速入门文章之一中的步骤 创建虚拟 Linux 设备 或 创建虚拟 Windows 设备。
如果
config.toml不是基于模板的,请打开 template 并使用注释后的指南在模板的结构下添加配置节。如果尚未配置新的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 是描述性的,因此也可以构造一个将
CERTIFICATE和PRIVATE KEY按顺序组合在同一文件中的 PEM。 - 最后,证书和私钥可以在称为 PKCS#12 的二进制表示形式中一起编码,这种编码形式将使用可选密码进行加密。
文件扩展名是任意的,需要运行 file 命令或查看文件以验证类型。 通常,文件使用以下扩展名约定:
-
.cer是采用 DER 或 PEM 形式的证书。 -
.pem是采用 PEM 形式的证书和/或私钥。 -
.pfx是 PKCS#12 文件。
IoT Edge要求证书和私钥为:
- PEM 格式
- 单独的文件
- 在大多数情况下,使用完整的链条
如果从 PKI 提供商获取 .pfx 文件,则很可能证书和私钥在一个文件中一起编码。 使用 file 命令验证它是否是 PKCS#12 文件类型。 可以使用 .pfx将 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/ 中的证书文件 |
-rw-r--r-- (644) | aziotcs |
/var/aziot/secrets/ 密钥目录 |
drwx------ (700) | aziotks |
/var/aziot/secrets/ 中的密钥文件 |
-rw------- (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中,找到 Trust bundle cert 部分。 如果缺少该部分,可以从配置模板文件复制它。提示
如果设备上尚不存在配置文件,请使用
/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 Device Update 或 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 证书轮换。
- 主题密钥标识符 = 哈希
- authorityKeyIdentifier = keyid:always,issuer:always
确保公用名(CN)与在 IoT Hub 注册的 IoT Edge 设备 ID 或 DPS 注册的 ID 匹配。 例如,在以下设备标识证书中,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-----
提示
若要在不access PKI 提供的证书文件的情况下进行测试,请参阅 创建演示证书以测试IoT Edge设备功能以生成生存期较短的非生产设备标识证书和私钥。
使用 IoT Hub 进行预配时的配置示例:
[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。
管理 Microsoft Edge 证书颁发机构 (CA)
Edge CA 有两种不同的模式:
- “快速入门”是默认行为。 使用快速入门进行测试,而不是用于生产。
- 生产 模式要求你为 Edge CA 证书和私钥提供自己的源。
快速入门指南:Edge CA
为帮助你入门,IoT Edge首次启动时自动生成 Edge CA 证书。 这个自签名证书仅用于开发和测试方案,而不可用于生产。 默认情况下,证书会在 90 天后过期,但可以配置过期时间。 此行为称为 “quickstart Edge CA”。
快速入门 Edge CA 使 edgeHub 和其他IoT Edge模块能够在首次安装IoT Edge且未配置时具有有效的服务器证书。 模块 edgehub 需要证书,因为模块或下游设备 需要建立安全的信道。 如果没有快速启动 Edge CA,开始会更加困难,因为你需要从 PKI 提供商或使用 openssl 等工具提供有效的服务器证书。
重要
切勿将快速入门 Edge CA 用于生产,因为本地生成的证书未连接到 PKI。
基于证书的标识的安全性来自运行良好的 PKI(基础结构),其中证书(文档)只是一个组件。 运行良好的 PKI 可实现安全策略的定义、应用程序、管理和强制实施,这些策略包括但不限于证书颁发、吊销和生命周期管理。
自定义快速入门 Edge CA 的有效期
若要将证书到期时间配置为默认的 90 天以外的时间,请在配置文件的“Edge CA certificate (Quickstart)”节中添加所需值(以天为单位)。
[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 证书。
若要更改自动更新逻辑,请将以下设置添加到 Edge CA 证书部分。config.toml 例如:
[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"
生产中的 Edge CA
使用生产方案或想要创建网关设备时,请勿使用快速入门 Edge CA。
你可以提供自己的证书并手动管理它们。 但是,为了避免有风险和容易出错的手动证书管理过程,请尽可能使用 EST 服务器。
注意
Edge CA 证书的公用名(CN)不能与设备配置文件 config.toml 中定义的设备主机名参数或在 IoT Hub 中注册的设备 ID 相匹配。
Edge CA 更新规划
当 Edge CA 证书续订时,它会重新生成它颁发的所有证书,例如模块服务器证书。 若要为模块提供新的服务器证书,IoT Edge边缘 CA 证书续订时重启所有模块。
若要最大程度地减少模块重启的潜在负面影响,请计划在特定时间(例如) threshold = "10d"续订 Edge CA 证书,并通知相关人员有关停机时间的解决方案。
示例:使用来自 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 Hub 进行身份验证时使用。
获取对 EST 服务器的访问权限。 如果没有 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 iotedge 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 Hub 的手动 X.509 预配和用于单个注册的 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 服务器证书过期时的持续时间(以毫秒为单位)。 如果设置了变量,则无论证书到期时间如何,检查都会发生。
有关环境变量的详细信息,请参阅 Edge Hub 和 Edge 代理环境变量。
1.2 及更高版本中的更改
- 设备 CA 证书现在是边缘 CA 证书。
-
工作负荷 CA 证书已弃用。 IoT Edge安全管理器现在直接从边缘 CA 证书生成IoT Edge中心
edgeHub服务器证书,而无需中间工作负荷 CA 证书。 - 默认配置文件具有新的名称和位置。 默认情况下,它已从
/etc/iotedge/config.yaml更改为/etc/aziot/config.toml。iotedge config import使用命令帮助将配置信息从旧位置和语法迁移到新位置。
后续步骤
在生产环境中部署解决方案之前,必须在IoT Edge设备上安装证书。 有关详细信息,请参阅 准备在生产环境中部署 IoT Edge 解决方案。