[AIX、Linux 和 Windows]

发布在遥测通道上的隐私

通过使用 TLS 对通过连接的传输进行加密,可保护通过遥测通道向任一方向发送的 MQTT 发布的隐私。

连接到遥测通道的 MQTT 客户机使用 TLS 来保护使用对称密钥密码术在通道上传输的发布的隐私。 由于未对端点进行认证,因此您不能只信任通道加密。 应将保护隐私与服务器认证或相互认证结合起来。

除了使用 SSL 以外,某些种类的虚拟专用网 (VPN)(例如,IPSec)将对 TCP/IP 连接的端点进行认证。 VPN 将对流经网络的每个 IP 包进行加密。 一旦建立了这样一个 VPN 连接,您就已经建立了一个可信网络。 您可以使用 VPN 网络上的 TCP/IP 将 MQTT 客户机连接至遥测通道。

如需了解加密通道和验证服务器的典型配置,请咨询 MQ 使用 TLS 进行遥测通道验证

在不认证服务器的情况下对 TLS 连接进行加密会将该连接暴露给中间人攻击。 尽管可以保护您交换的信息不被窃听,但是您并不知道是与谁在交换信息。 除非您控制整个网络,否则其他人就有可能拦截您的 IP 传输并且伪装成端点。

您可以使用支持匿名 TLS 的 Diffie-Hellman 密钥交换 CipherSpec 来创建加密 TLS 连接,而无需认证服务器。 在客户机和服务器之间共享并用于加密 TLS 传输的主密钥是在不交换专用签名服务器证书的情况下建立的。

由于匿名连接不安全,因此大多数 TLS 实现都不会缺省使用匿名 CipherSpecs。 如果遥测通道接受针对 TLS 连接的客户机请求,那么该通道必须具有受口令保护的密钥库。 默认情况下,由于 TLS 实现不使用匿名 CipherSpecs, 密钥存储必须包含客户端可以验证的私人签名证书。

如果您使用匿名 CipherSpec,那么服务器密钥库必须存在,但是它不需要包含任何私下签名的证书。

另一种建立加密连接的方法是,将客户机中的信任提供程序替换为您自己的实现。 您的信任提供程序将不对服务器证书进行认证,但是连接将加密。
注意: 将 TLS 与 MQTT 配合使用时,可以使用大型消息,但是这样做可能会影响性能。 MQTT 针对处理小消息进行了优化 (通常大小在 1KB 到 1MB 之间)。