Java MQTT android服务器连接问题,以使用.bks文件插入导入ssl证书

Java MQTT android服务器连接问题,以使用.bks文件插入导入ssl证书,java,android,ssl,mqtt,Java,Android,Ssl,Mqtt,Mqtt android客户端代码 此代码在没有ssl证书连接的情况下运行良好 public void connectToMqttServerTest() { String clientId = MqttClient.generateClientId(); final MqttAndroidClient mqttAndroidClient = new MqttAndroidClient(this.getApplicationContext(), "ssl://10.0.0.50:

Mqtt android客户端代码

此代码在没有ssl证书连接的情况下运行良好

public void connectToMqttServerTest() {
    String clientId = MqttClient.generateClientId();
    final MqttAndroidClient mqttAndroidClient = new MqttAndroidClient(this.getApplicationContext(), "ssl://10.0.0.50:8883", "AndroidMQTTServer", persistence);
    MqttConnectOptions connectionOptions = new MqttConnectOptions();
    connectionOptions.setCleanSession(true);

    try {
        InputStream srvIn = getResources().openRawResource(R.raw.key_store);
        connectionOptions.setSocketFactory(mqttAndroidClient.getSSLSocketFactory(srvIn, "1234"));

    } catch (MqttSecurityException e) {
        e.printStackTrace();
    }

    mqttAndroidClient.setCallback(new MqttCallback() {
        @Override
        public void connectionLost(Throwable cause) {
            System.out.println("mqtt Connection was lost!");
        }

        @Override
        public void messageArrived(String topic, MqttMessage message) throws Exception {
            Log.e("message", message.toString());
            System.out.println("mqtt Message Arrived!: " + topic + ": " + new String(message.getPayload()));
        }

        @Override
        public void deliveryComplete(IMqttDeliveryToken token) {
            System.out.println("mqtt Delivery Complete!");
        }
    });

    try {
        mqttAndroidClient.connect(connectionOptions, null, new IMqttActionListener() {

            @Override
            public void onSuccess(IMqttToken asyncActionToken) {
                System.out.println("mqtt Connection Success!");
                try {
                    mqttAndroidClient.subscribe("res_shdap_11_findDevices", 1);
                    mqttAndroidClient.publish("req_shdap_11_findDevices", new MqttMessage("{\"message\" : \"\"}".getBytes()));
                } catch (MqttException ex) {

                }
            }

            @Override
            public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                System.out.println("mqtt Connection Failure!");
                System.out.println("mqtt throwable: " + exception.toString());
            }
        });
    } catch (MqttException ex) {
        System.out.println("mqtt exception " + ex.toString());
    }
}
错误: MqttException(0)-javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚点


欢迎来到Stackoverflow。仅仅发布一些代码说“这不起作用”被认为是离题的,请阅读文档,询问一些好问题:嘿,你知道什么时候会出现SSL握手异常吗?错误意味着代理使用的证书在你的密钥库中没有CA证书