I have looked at the Spark source code and looked at how Spark connects to Openfire. They use a “DummySSLSocketFactory” which implements Java’s SSLSocketFactory and basically accepts all certificates as long as they aren’t expired.
Openfire client connection security settings:
“Custom”
-> Old SSL set to :NOT AVAILABLE
-> TLS set to: REQUIRED
Spark will connect via port 5222 successfully, but when mimicing in my own Smack code, I get:
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.read1(Unknown Source)
at java.io.BufferedReader.read(Unknown Source)
at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:42)
at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2992)
at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)
at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1410)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
… 19 more
I am doing this to set up my connection:
this.connectionConfig = new ConnectionConfiguration(SERVER_DOMAIN_NAME, SERVER_PORT);
this.connectionConfig.setSecurityMode(ConnectionConfiguration.SecurityMode.enab led);
this.connectionConfig.setSocketFactory(new DummySSLSocketFactory());
this.xmppConnection = new XMPPConnection(this.connectionConfig);
where SERVER_PORT = 5222
This is the same routine that Spark uses seemingly successfully.
Does anyone have any experience connecting with TLS (not old SSL) with Smack??
Best,
Barry