2015-02-26 4 views
5

Я столкнулся с проблемой подключения SSL asmack на Android 5.0 и выше. Я думаю, что это связано с безопасностью.Ошибка входа в систему Asmack на Android 5.0 и выше

я решил его отключить следующее перед подключением:

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

Но я хочу быть включен безопасности. Как разрешить его без отключения setSecurityMode?

Я посмотрел Изменения, 5.0 http://developer.android.com/about/versions/android-5.0-changes.html#ssl

Но не может найти решение

мой 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

Не могли бы вы включить сообщение об ошибке вы получаете, когда включена защита, и вы испытываете эту проблему. – Tom

+0

Спасибо за внимание. Я добавил logcat –

ответ

1

Проблема

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); 
    } 

С этим я был используя самоподписанный сертификат ssl. Она должна быть решена путем добавления сертификата SSL на Openfire и использовать его в приложении

[email protected]

+0

Может ли кто-нибудь объяснить, как добавить сертификат ssl на openfire? –

Смежные вопросы