两层信任关系
TLS 在 MQTT 之下提供通道加密与身份校验:服务端出示证书,客户端用预置的根证书验证;若服务端要求客户端证书,则形成双向认证,设备身份绑定到私钥而不是共享口令。握手带来一次性的计算与往返开销,资源受限的设备需要评估是否改用更轻量的安全方案。
配置项与注意点
| 配置项 | 作用 | 注意 |
|---|---|---|
| 根证书 | 校验服务端身份 | 需随固件预置,并具备随证书颁发机构轮换的更新通道 |
| 服务端证书链 | 客户端校验时读取完整链 | 只下发叶证书会导致校验失败 |
| 客户端证书与私钥 | 双向认证时的设备身份 | 私钥应存放在受保护的安全存储中 |
| 系统时间 | 证书有效期校验的依据 | 无实时时钟的设备上电时间错误会直接校验失败 |
| 服务端名称 | 用于证书主体校验 | 直接用 IP 连接容易与证书主体不匹配 |
| 连接端口 | 区分加密与明文通道 | 明文端口仅限隔离网段内使用 |
典型使用场景
- 公网设备接入:加密传输加服务端身份校验,防止被中间人劫持
- 高价值设备:双向认证把设备身份绑定到证书,替代共享口令
- 合规场景:数据传输加密与身份可追溯的常见要求
- 内网隔离区:明文端口仅在内网使用,与加密通道分开部署
证书轮换要提前规划:设备端需要一条可更新的根证书下发通道,否则证书颁发机构更换时会出现整批设备无法连接的局面。
把同一张客户端证书烧进所有设备,等于所有设备共用同一个身份,一旦泄露无法逐台吊销,也很难定位是哪台设备在异常接入。