MQTT 客户端是否需要具有与 MQTT 代理用于 TLS 相同的密钥和证书?

Is it necessary for MQTT client to have same key, cert as used by MQTT broker for TLS?

我正在使用 node.js mosca MQTT 代理和 node.js mqtt 包来实现 mqtt 客户端。

https://github.com/mcollina/mosca

https://www.npmjs.com/package/mqtt

我想通过 TLS 实现 MQTT。假设 mosca MQTT 代理使用 tls-cert.pem 和 tls-key.pem,mqtt 客户端是否需要使用相同的证书和密钥才能连接到此 MQTT 代理?

mosca MQTT 代理 运行 作为独立使用以下命令;

mosca --key ./tls-key.pem --cert ./tls-cert.pem --http-port 3000 --http-bundle --http-static ./ | pino

当 Web 浏览器 运行ning HTTPS 与 Web 服务器 运行ning HTTPS 通信时,Web 浏览器不需要知道证书和密钥。我想知道这是否适用于 mqtt。

对于基本的安全连接,客户端只需要知道用于签署代理证书的 CA 证书。它用它来向自己证明经纪人就是它声称的那个人。

如果您使用的是自签名证书(我猜您是),那么 CA 证书与代理证书相同,因此客户端和代理都将拥有相同的证书。

Web 浏览器有一个内置的 CA 证书列表,涵盖了大多数颁发证书的 public CA。

除了经纪人之外,没有任何人可以访问私钥。