2015-01-21 4 views
0

Я использую asmack-android-16 для своего приложения чата. Иногда при создании соединения я получил исключение SSL, а затем я не смог войти на сервер. Мой сервер использует SSL-аутентификацию для соединений. Может кто-нибудь, пожалуйста, помогите мне? I'am борется с этим изИсключение SSL при подключении к серверу с использованием asmack

Здесь недели моя конфигурация соединения:

HOST = "my_ejabbered_url"; 
    PORT = "5223"; 
    connectionConfiguration = new ConnectionConfiguration(HOST,PORT); 
    connectionConfiguration.setDebuggerEnabled(true); 
    SASLAuthentication.supportSASLMechanism("PLAIN"); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
     connectionConfiguration.setTruststoreType("AndroidCAStore"); 
     connectionConfiguration.setTruststorePassword(null); 
     connectionConfiguration.setTruststorePath(null); 
    } else { 
     connectionConfiguration.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"; 
     connectionConfiguration.setTruststorePath(path); 
    } 
    connectionConfiguration.setSASLAuthenticationEnabled(true); 

XMPPConnection соединение = новый XMPPConnection (connectionConfiguration); connection.connect(); // Вызов этой строки дает мне исключение, хотя соединение создано.

Вот журналы:

01-21 07:59:59.044  557-1418/app_package_name D/SMACK﹕ 07:59:59 AM SENT (1119449544): <stream:stream to="ejabbered_url" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"> 
01-21 07:59:59.443  557-1419/app_package_name D/SMACK﹕ 07:59:59 AM RCV (1119449544): <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='635893435' from='ejabbered_url' version='1.0' xml:lang='en'><stream:features><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'><required/></starttls><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='IJkhK7jY9EYjAQlR7KzPYJ8ZwMo='/></stream:features> 
01-21 07:59:59.443  557-1419/app_package_name D/SMACK﹕ 07:59:59 AM SENT (1119449544): <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> 
01-21 07:59:59.857  557-1419/app_package_name D/SMACK﹕ 07:59:59 AM RCV (1119449544): <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/> 
01-21 08:00:00.271  557-1418/app_package_name D/SMACK﹕ 08:00:00 AM SENT (1119449544): <presence id="bMxCR-2" type="unavailable"></presence> 
01-21 08:00:00.271  557-1418/app_package_name W/System.err﹕ java.net.SocketException: Socket closed 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at libcore.io.Posix.sendtoBytes(Native Method) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at libcore.io.Posix.sendto(Posix.java:155) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:177) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at libcore.io.IoBridge.sendto(IoBridge.java:466) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at java.net.PlainSocketImpl.write(PlainSocketImpl.java:507) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:46) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at java.io.BufferedWriter.flush(BufferedWriter.java:124) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at org.jivesoftware.smack.util.ObservableWriter.flush(ObservableWriter.java:48) 
01-21 08:00:00.294  557-1418/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:211) 
01-21 08:00:00.302  557-1418/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketWriter.access$000(PacketWriter.java:40) 
01-21 08:00:00.302  557-1418/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:76) 
01-21 08:00:00.302  557-1418/app_package_name D/SMACK﹕ 08:00:00 AM SENT (1119449544): </stream:stream> 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ XMPPError establishing connection with server.: remote-server-error(502) XMPPError establishing connection with server. 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ -- caused by: javax.net.ssl.SSLException: Connection closed by peer 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.XMPPConnection.initReaderAndWriter(XMPPConnection.java:699) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:835) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:262) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:69) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ Nested Exception: 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ javax.net.ssl.SSLException: Connection closed by peer 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:398) 
01-21 08:00:00.419  557-1419/app_package_name W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.<init>(OpenSSLSocketImpl.java:645) 
01-21 08:00:00.427  557-1419/app_package_name W/System.err﹕ at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:616) 
01-21 08:00:00.427  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.XMPPConnection.initReaderAndWriter(XMPPConnection.java:666) 
01-21 08:00:00.427  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:835) 
01-21 08:00:00.427  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:262) 
01-21 08:00:00.427  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43) 
01-21 08:00:00.427  557-1419/app_package_name W/System.err﹕ at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:69) 

ответ

0

Существует что-то странное в логах:

  1. Вы используете порт 5223, который обычно SSL
  2. Сеанс шоу что вы пытаетесь использовать starttls.

Я бы ожидал, что это будет тот или иной.

Пробовал ли вы использовать порт 5222?

+0

Мой сервер ожидает tls auth. Итак, если я изменил порт на 5222, это ли моя аутентификация для tls? –

+0

5222 может быть настроен на запуск starttls, что означает, что ваш клиент будет согласовывать шифрование при его подключении. Похоже, это то, что пытается сделать ваш клиент (см. Startls в ваших журналах). Ссылка: http://xmpp.org/rfcs/rfc6120.html#tls –

+0

порт 5222 не работает. Есть ли у вас какие-либо предложения по дальнейшим расследованиям, поскольку это становится серьезной проблемой для моего приложения. –

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