java - 使用带预共享 key 的 TLS 连接到 MQTT 代理

标签 java ssl

我正在尝试使用 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 作为代理是一个合适的解决方法:

Mosquitto

关于java - 使用带预共享 key 的 TLS 连接到 MQTT 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946458/

相关文章:

java - 将多个响应合并为一个响应

url - 使用网站IP地址查看网站

javascript - 在 js 中使用自签名证书发出请求(使用来自 npm 的请求 promise )

.htaccess - 阻止谷歌将我的页面索引为 ssl

node.js - 将 SSL 添加到 CometD

ssl - 如何从 .key 和 .crt 文件中获取 .pem 文件?

java - 将字节数组转换为 JSON 错误 JSON 无效

java - Intellij IDEA @OneToMany mappedBy属性错误解决

java - 将 ExecutorService 与要执行的任务树一起使用

java - @QueryParam 检索表单参数