MQTT 代理和客户端上的 SSL/TLS 证书应该相同吗?

Posted

技术标签:

【中文标题】MQTT 代理和客户端上的 SSL/TLS 证书应该相同吗?【英文标题】:SSL/TLS certificates on the MQTT broker and Client should be same? 【发布时间】:2017-08-31 11:23:12 【问题描述】:

我正在尝试使用 SSL/TLS 加密设置 Mosca 服务器。

查看 https://github.com/mcollina/mosca/wiki/TLS-SSL-Configuration 页面上的 Mosca wiki 表明我们将需要代理的私钥和证书。

虽然该页面对基于 SSL/TLS 的 mqtt 的客户端配置保持沉默,但我找到了 Mattino Collina 本人关于客户端 SSL/TLS 配置的文章。这里http://www.hivemq.com/blog/mqtt-client-library-mqtt-js

这篇文章指出,对于 mqtts,我们也需要在客户端提供密钥和证书。它们应该是我们在设置代理时提供的相同密钥和证书,还是对于我们连接到代理的每个客户端都不同?

这些密钥和证书是为代理验证客户端的一种方式吗?

【问题讨论】:

【参考方案1】:

有多少证书和密钥取决于您要达到的目标。

如果您只需要安全连接,那么您只需要代理上的证书和私钥。 (您可能需要向客户端提供 CA 证书,具体取决于您是签署自己的证书还是使用由公认的公共 CA 签署的证书)。

如果您想通过 SSL 唯一标识客户端,那么客户端还需要它自己的唯一证书和匹配的私钥。这些将不同于代理证书/密钥对,但可能由同一个 CA 签名。

【讨论】:

以上是关于MQTT 代理和客户端上的 SSL/TLS 证书应该相同吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?

工业物联网的云端协议将以MQTT+SSL/TLS为主,协议格式以JSON为主

使用客户端应用程序更新非 ssl 中的 Amazon RDS SSL/TLS 证书

微信支付-Https与代理

ssl.client.auth指定了什么?

Play 2.2.1 中的 SSL\TLS 支持