如何使用 CA 签名的服务器证书连接 SSL MQTT 客户端?
How to connect a SSL MQTT client with a CA signed server certificate?
我需要注册一个MQTT地址,但是我遇到了异常。据我所知,我不需要上传任何证书,只需使用服务器的。我该怎么办?
代码:
public void connect() throws MqttException{
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName("username");
options.setPassword("123456".toCharArray());
options.setAutomaticReconnect(true);
client = new MqttClient("ssl://myadress:1883", MqttClient.generateClientId());
client.setCallback(callback);
System.out.println(topic);
try {
client.connect(options);
client.subscribe(topic);
} catch (Exception e){
e.printStackTrace();
}
}
异常:
MqttException (0) - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我正在使用 Eclipse Paho 库,但我没有在该库的文档中找到(或者,如果我找到了,我也不理解)任何非常有启发性的内容。
您需要提供自己的 SSLSocketFactory
,它拥有自己的 TrustManager
,知道信任您的证书。
您将 SSLSocketFactory 添加到传递给 MqttClient.connect()
调用的 MqttClientOptions
对象。
网上有很多关于使用您自己的 CA 证书设置 SSLSocketFactory 的示例。
我需要注册一个MQTT地址,但是我遇到了异常。据我所知,我不需要上传任何证书,只需使用服务器的。我该怎么办?
代码:
public void connect() throws MqttException{
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName("username");
options.setPassword("123456".toCharArray());
options.setAutomaticReconnect(true);
client = new MqttClient("ssl://myadress:1883", MqttClient.generateClientId());
client.setCallback(callback);
System.out.println(topic);
try {
client.connect(options);
client.subscribe(topic);
} catch (Exception e){
e.printStackTrace();
}
}
异常:
MqttException (0) - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
我正在使用 Eclipse Paho 库,但我没有在该库的文档中找到(或者,如果我找到了,我也不理解)任何非常有启发性的内容。
您需要提供自己的 SSLSocketFactory
,它拥有自己的 TrustManager
,知道信任您的证书。
您将 SSLSocketFactory 添加到传递给 MqttClient.connect()
调用的 MqttClientOptions
对象。
网上有很多关于使用您自己的 CA 证书设置 SSLSocketFactory 的示例。