Asmack inicio de sesión en Android 5.0 y superior

Estoy enfrentando un problema de conexión SSL de asmack en Android 5.0 y versiones posteriores. Creo que está relacionado con la seguridad.

Lo resolví inhabilitando el siguiente antes de conectarme:

config.setSASLAuthenticationEnabled(false); config.setSecurityMode(SecurityMode.disabled); 

Pero quiero seguridad habilitada. ¿Cómo resolverlo sin deshabilitar setSecurityMode ?

Miré los cambios 5.0 http://developer.android.com/about/versions/android-5.0-changes.html#ssl

Pero no puede encontrar la solución

Mi logcat es

 02-26 17:28:20.596: W/System.err(23043): -- caused by: javax.net.ssl.SSLHandshakeException: Handshake failed 02-26 17:28:20.596: W/System.err(23043): javax.net.ssl.SSLHandshakeException: Handshake failed 02-26 17:28:20.596: W/System.err(23043): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:392) 02-26 17:28:20.601: W/System.err(23043): at com.android.org.conscrypt.OpenSSLSocketImpl.waitForHandshake(OpenSSLSocketImpl.java:652) 02-26 17:28:20.601: W/System.err(23043): at com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:614) 02-26 17:28:20.601: W/System.err(23043): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x9fca9e00: Failure in SSL library, usually a protocol error 02-26 17:28:20.601: W/System.err(23043): error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error (external/openssl/ssl/s23_clnt.c:765 0xaec30bf9:0x00000000) 02-26 17:28:20.601: W/System.err(23043): at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 02-26 17:28:20.601: W/System.err(23043): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:320) 

El problema era

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { config.setTruststoreType("AndroidCAStore"); config.setTruststorePassword(null); config.setTruststorePath(null); } else { config.setTruststoreType("BKS"); String path = System.getProperty("javax.net.ssl.trustStore"); if (path == null) path = System.getProperty("java.home") + File.separator + "etc" + File.separator + "security" + File.separator + "cacerts.bks"; config.setTruststorePath(path); } 

Con esto yo estaba usando el certificado de ssl auto firmado. Debe resolverse agregando el certificado de ssl en openfire y usándolo en la aplicación

[email protected]

  • ¿Cómo mantener una conexión XMPP estable en Android con (a) smack?
  • La mejor manera de crear un cliente de chat Android XMPP en Unity3D
  • La clase StickersManager no se encuentra para Quickblox
  • ¿Cómo obtener la marca de tiempo del mensaje xmpp entrante?
  • ¿Es la mejor práctica para las conexiones móviles persistentes en Android?
  • Cómo obtener DiscussionHistory para MultiUserChat habitación usando aSmack?
  • Obteniendo "XMPPException $ XMPPErrorException: XMPPError: service-unavailable - cancel" al crear un grupo usando XMPP (4.1.3)
  • ¿Cómo implementar el estado de lectura de mensajes como whatsapp blue tick mark?
  • Conexión XMPP con Smack 4.1 en Android Studio
  • Intentando conectarme con el servidor XMPP con aSmack en Android me consigue "no resolver DNS"
  • Cómo saber Escribir Estado en XMPP openfire usando Smack
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.