Java 中使用 TLS 的 Eclipse Paho MQTT 客户端

Eclipse Paho MQTT client in Java using TLS

我需要使用 Eclipse Paho.

在 Java 中创建 MQTT 客户端

我的 MQTT Broker 支持启用了 TLS 的 Nginx TCP 反向代理。因此,我需要配置客户端使用TLS。

尽管如此,我不想向我的客户端提供证书(我认为我真的不需要,因为我可以连接到启用了 TLS 的 NodeRED MQTT 客户端,而这个客户端没有提供任何证书; 同样 - 我被告知 - 使用 .NET Core 客户端)。

是否可以使用 Eclipse Paho 库执行此操作? 我能找到的所有示例都使用了证书。

是的,您只需要提供 ssl://mqtts:// URL 而不是 tcp://mqtt://

例如使用 Paho Java 客户端 page:

上的示例
String topic        = "MQTT Examples";
String content      = "Message from MqttPublishSample";
int qos             = 2;
String broker       = "tcp://mqtt.eclipse.org:1883";
String clientId     = "JavaSample";
MemoryPersistence persistence = new MemoryPersistence();

您只需将 broker 字符串更改为:

String broker       = "ssl://mqtt.eclipse.org:8883";

这假定 nginx 正在侦听端口 8883,并且代理正在使用由 public 受信任的 CA 签名的证书。

所有这些也在 Javadoc here

中描述