2015-02-26 28 views
5

Sono di fronte a un problema di connessione SSL asmack su Android 5.0 e versioni successive. Penso che sia legato alla sicurezza.Problema di accesso asmack su Android 5.0 e versioni successive

ho risolto che disabilitando segue prima di collegare:

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

Ma voglio protezione attivata. Come risolverlo senza disabilitare setSecurityMode?

ho guardato i cambiamenti 5,0 http://developer.android.com/about/versions/android-5.0-changes.html#ssl

ma non riesce a trovare la soluzione

mia logcat è

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) 
+0

Potrebbe includere il messaggio di errore che si ottiene quando la sicurezza è attivata e si verifica questo problema. – Tom

+0

Grazie per l'esame ho aggiunto logcat –

risposta

1

Il 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 questo ero utilizzando un certificato ssl autofirmato. Dovrebbe essere risolto con l'aggiunta di certificato SSL su openfire e di utilizzarlo in app

[email protected]

+0

Qualcuno può spiegare come aggiungere un certificato SSL su openfire? –