我正在尝试使用 Java 控制台应用程序连接到 MQTT 代理,该代理仅支持带有预共享 key 的 TLS(不支持 SSL 或其他客户端证书文件选项)。我有以下依赖项:
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.56</version>
</dependency>
我使用以下页面作为起点: http://www.hivemq.com/blog/mqtt-client-library-encyclopedia-eclipse-paho-java
他们有以下用于 SSL 连接的部分:
MqttClient client = new MqttClient("ssl://yourbroker:8883", MqttClient.generateClientId(), new MemoryPersistence());
SSLContext sslContext = SSLContext.getInstance("SSL");
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore keyStore = readKeyStore();
trustManagerFactory.init(keyStore);
sslContext.init(null, trustManagerFactory.getTrustManagers(), new SecureRandom());
MqttConnectOptions options = new MqttConnectOptions();
options.setSocketFactory(sslContext.getSocketFactory());
client.connect(options);
我真正需要的是一个使用带有预共享 key 的 TLS 的示例,我已经做了很多搜索并且可以找到一个 TLS PSK 示例(http://tiebing.blogspot.com.au/2013/09/java-bouncy-castle-tls-psk-example.html)但不知道如何连接 MQTT 客户端到那个 TLS PSK 示例。
如有任何帮助,我们将不胜感激,谢谢!
最佳答案
我从来没有找到解决这个问题的方法,但是使用 Mosquitto 作为代理是一个合适的解决方法:
关于java - 使用带预共享 key 的 TLS 连接到 MQTT 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946458/