Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
IoT Hub使用传输层安全性(TLS)来保护来自 IoT 设备和服务的连接。
注释
Azure IoT Hub将与Azure广泛服务公告保持一致,在2025年8月31日结束对TLS 1.0和1.1的支持。 此外,从
从 2025 年 8 月 31 日开始,Azure IoT Hub团队将开始在所有 IoT 中心主动强制实施 TLS 1.2 和强密码套件。 此强制实施是我们加强安全性并确保跨Azure服务合规性的更广泛承诺的一部分。
因此,必须正确测试和验证所有 IoT 设备是否与 TLS 1.2 兼容,并提前 推荐的密码 。
相互 TLS 支持
相互 TLS 身份验证可确保客户端验证服务器(IoT Hub)证书,服务器(IoT Hub)使用 X.509 客户端证书或 X.509 指纹 验证客户端。 IoT Hub在完成身份验证后执行授权。
对于高级消息队列协议(AMQP)和消息队列遥测传输(MQTT)协议,IoT 中心在初始 TLS 握手中请求客户端证书。 如果提供了一份客户端证书,IoT Hub会验证客户端证书,客户端会验证IoT Hub的证书。 此过程称为相互 TLS 身份验证。 当 IoT Hub 收到 MQTT 连接数据包或 AMQP 链接打开时,将对请求客户端进行授权,并判断客户端是否需要 X.509 身份验证。 如果已完成相互 TLS 身份验证,并且客户端被授权作为设备进行连接,则系统会允许其进行连接。 但是,如果客户端要求 X.509 身份验证,并且 TLS 握手期间未完成客户端身份验证,则IoT Hub拒绝连接。
对于 HTTP 协议,当客户端发出第一个请求时,IoT Hub检查客户端是否需要 X.509 身份验证,以及客户端身份验证是否已完成,IoT Hub执行授权。 如果客户端身份验证未完成,则IoT Hub拒绝连接
成功握手后,IoT Hub可以使用对称密钥或 X.509 证书对设备进行身份验证。 对于基于证书的身份验证,IoT Hub根据提供的指纹或证书颁发机构(CA)验证证书。 若要了解详细信息,请参阅 使用 X.509 证书对标识进行身份验证。
IoT Hub的服务器 TLS 证书
在 TLS 握手期间,IoT Hub向连接客户端提供 RSA 密钥的服务器证书。 全局Azure云中的所有 IoT 中心都使用 DigiCert 全局根 G2 颁发的 TLS 证书。
强烈建议所有设备信任以下两个根 CA:
- DigiCert Global G2 根 CA
- Microsoft RSA 根 CA 2017
有关下载这些证书的链接,请参阅Azure证书颁发机构详细信息。
根 CA 迁移很少见。 你应该始终为根 CA 被泄露和需要紧急根 CA 迁移的不太可能的情况准备 IoT 解决方案。
密码套件
从2025年8月31日开始,物联网中心将强制对所有现有和新的物联网中心使用推荐的强密码套件。 在此日期后,不再支持不推荐的弱密码套件。
为了符合安全连接Azure安全策略,IoT Hub仅支持以下 RSA 和 ECDSA 密码套件:
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
在 没有 minTlsVersion:1.2 的中心上,以下不推荐的密码套件被允许使用,直到 2025 年 8 月 31 日:
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
客户端可以建议在 ClientHello 期间使用的高级密码套件的列表。 但是,IoT Hub可能不支持其中一些,例如,ECDHE-ECDSA-AES256-GCM-SHA384。 在这种情况下,IoT Hub尝试遵循客户端的首选项,但最终会通过 ServerHello 来协商降级密码套件。
SDK 和IoT Edge的 TLS 配置
使用以下链接在IoT Hub客户端 SDK 中配置 TLS 1.2 并允许使用密码。
| 语言 | 支持 TLS 1.2 的版本 | 文档 |
|---|---|---|
| C | 标记 2019-12-11 或更新的标记 | 链接。 |
| Python | 版本 2.0.0 或更高版本 | 链接。 |
| C# | 版本 1.21.4 或更高版本 | 链接。 |
| Java | 版本 1.19.0 或更高版本 | 链接。 |
| Node.js | 版本 1.12.2 或更高版本 | 链接。 |
IoT Edge设备可在与IoT Hub通信时配置为使用 TLS 1.2。 为此,请使用 IoT Edge 文档页。
证书钉扎
证书锁定和过滤与 IoT Hub 终结点关联的 TLS 服务器证书和中间证书,这样做是强烈不推荐的,因为 Microsoft 经常更换这些证书,并且很少有通知。 如有必要,请仅固定根证书,如这篇 Azure IoT 博客文章中所述。
后续步骤
- 若要详细了解 IoT Hub 的安全性和访问控制,请参阅 控制对 IoT Hub 的访问。
- 若要了解有关使用 X509 证书进行设备身份验证的详细信息,请参阅使用 X.509 CA 证书进行设备身份验证