0
我的聊天應用程序使用asmack-android-16。有時候,在創建連接時,我得到了SSL異常,然後我無法在服務器上登錄。我的服務器使用SSL身份驗證進行連接。有人可以幫幫我嗎?我'從周使用asmack連接到服務器的SSL異常
這裏與此掙扎是我的連接配置:
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)
我的服務器期望tls auth。所以,如果我將端口更改爲5222,這是否使我的身份驗證tls? – 2015-01-23 11:18:14
5222可以配置爲執行starttls,這意味着您的客戶端將在連接時協商加密。看起來這就是你的客戶試圖做的事情(參見日誌中的startls)。參考:http://xmpp.org/rfcs/rfc6120.html#tls – 2015-01-24 09:46:35
端口5222不起作用。你有任何進一步調查的建議,因爲這已成爲我的應用程序的嚴重問題。 – 2015-01-29 11:06:50