MqttException (0) - javax.net.ssl.SSLHandshakeException: сбой рукопожатия при использовании клиента MQTTAndroid - PullRequest
0 голосов
/ 18 мая 2018

Это ошибка, которую я получаю в своем клиенте Android для доступа к брокеру mosquitto mqtt, работающему на моем raspberrypi

javax.net.ssl.SSLHandshakeException: сбой рукопожатия SSL: ssl = 0x90e76d40: I /O ошибка во время системного вызова, сброс соединения по пиру

Это часть кода, которая пытается подключиться

keystore.bks содержит мой CA.crt и клиент.crt

client = new MqttAndroidClient(getApplicationContext(), "ssl://192.168.43.112:1883", clientId);
InputStream input = getApplicationContext().getAssets().open("keystore.bks");
options = new MqttConnectOptions();
options.setSocketFactory(client.getSSLSocketFactory(input,"password"));
IMqttToken token = client.connect(options);
token.setActionCallback(new IMqttActionListener() {
    @Override
    public void onSuccess(IMqttToken asyncActionToken) {
         Log.d("Connection", "Connected to Broker ");
         //Toast.makeText(getApplicationContext(),"ConnectiontoMQTTBrokerMade", Toast.LENGTH_SHORT).show();
         pubConnect.setVisibility(View.INVISIBLE);
         pubDisconnect.setVisibility(View.VISIBLE);
         pubPub.setVisibility(View.VISIBLE);
         ipinputpublish.setVisibility(View.INVISIBLE);
         messagemqtt.setVisibility(View.VISIBLE);
    }

    @Override
    public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
        //Toast.makeText(getApplicationContext(),"ConnectiontoMQTTBrokerRejected", Toast.LENGTH_SHORT).show();
        Toast.makeText(getApplicationContext(), exception.toString(), Toast.LENGTH_LONG).show();
        Log.e("Connection Error", exception.toString());
        Log.d("Connection", "Unable to connect to Broker");
    }
});

На стороне брокера я получаю этот журнал

Новое соединение с 192.168.43.1 на порту 1883.

Ошибка сокета на клиенте, отключение.

mosquitto.conf -

pid_file /var/run/mosquitto.pid 
persistence true 
persistence_location /var/lib/mosquitto/ 
include_dir /etc/mosquitto/conf.d 

cafile /etc/mosquitto/ca_certificates/ca.crt 
certfile /etc/mosquitto/certs/server.crt 
keyfile /etc/mosquitto/certs/server.key 
require_certificate true

, если я использую

mosquitto_sub -t 'test/topic' -v --cafile ca.crt --cert client.crt --key client.key

Получается подписка.

Может кто-нибудь сказать мне, что вызывает эту ошибку?

...