Это ошибка, которую я получаю в своем клиенте 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
Получается подписка.
Может кто-нибудь сказать мне, что вызывает эту ошибку?