2017-04-20 1 views
0

abgebrochen Ich versuche, meine Openfire 4.1.3 Server mit Smack 4.2, die aktuelle Konfiguration zu verbinden, funktioniert ok:Kann nicht TLS-Verbindung zu Openfire 4.1.3 Server mit Smack 4.2 auf Android etablieren: SSLProtocolException: SSL-Handshake

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder(); 
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); 
    config.setXmppDomain(serviceName); 
    config.setHost(context.getString(R.string.server)); 
    config.setHostnameVerifier(verifier); 
    config.setHostAddress(addr); 
    config.setResource("Android"); 
    config.setPort(Integer.parseInt(context.getString(R.string.server_port))); 
    config.setDebuggerEnabled(true); 

    XMPPTCPConnection.setUseStreamManagementResumptionDefault(true); 
    XMPPTCPConnection.setUseStreamManagementDefault(true); 
    connection = new XMPPTCPConnection(config.build()); 

Wenn ich versuche, mit SecurityMode.required Verbindung herzustellen, kann ich keine Verbindung herstellen. Ich habe gelesen, dass ich CA auf dem Gerät eingestellt habe, aber ich weiß nicht, was ich tun soll. Irgendeine Hilfe?

EDIT: Dies sind die neuen Linien für den Versuch hinzugefügt, um eine Verbindung mit SecurityMode.required

config.setSecurityMode(ConnectionConfiguration.SecurityMode.required); 
    config.setCompressionEnabled(false); 

    SSLContext sslContext = null; 
    try { 
     sslContext = createSSLContext(context); 
    } catch (KeyStoreException | NoSuchAlgorithmException 
      | KeyManagementException | IOException | CertificateException e) { 
     e.printStackTrace(); 
    } 

    config.setCustomSSLContext(sslContext); 
    config.setSocketFactory(sslContext.getSocketFactory()); 

Es erzeugt diesen Fehler-Stack:

W/System.err: javax.net.ssl.SSLHandshakeException: Handshake failed 
W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:429) 
W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.waitForHandshake(OpenSSLSocketImpl.java:682) 
W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:644) 
W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.initReaderAndWriter(XMPPTCPConnection.java:656) 
W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.initConnection(XMPPTCPConnection.java:633) 
W/System.err:  at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:891) 
W/System.err:  at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:377) 
W/System.err:  at it.chiaia.portaleragazze.chat.xmpp.XmppServer$2.doInBackground(XmppServer.java:176) 
W/System.err:  at it.chiaia.portaleragazze.chat.xmpp.XmppServer$2.doInBackground(XmppServer.java:169) 
W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:305) 
W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
W/System.err:  at java.lang.Thread.run(Thread.java:761) 
W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb38b1400: Failure in SSL library, usually a protocol error 
W/System.err: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER (external/boringssl/src/ssl/tls_record.c:192 0xa769d1aa:0x00000000) 
W/System.err:  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) 
W/System.err:  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 
W/System.err: ... 14 more 
+0

Sie müssen weitere Details angeben. "Ich kann keine Verbindung herstellen" enthält nicht viele Informationen. – Flow

+0

Ja, es tut mir leid. Nach dieser [Anleitung] (http://smackssl.blogspot.it/2015/10/ssl-implementation-in-android-for-smack.html) habe ich die Keystore-Datei erstellt, aber beim Versuch, eine Verbindung herzustellen, bekomme ich ** IOException: Handshake fehlgeschlagen ** – TheEnigmist

+0

Immer die vollständige Ausnahmebedingung ** und ** stacktrace anzeigen. – Flow

Antwort

0

setUsernameAndPassword() -Methode fehlt.

val config= XMPPTCPConnectionConfiguration.builder() 
        .setXmppDomain(mDomainName) 
        .setUsernameAndPassword(mUsername,mPassword) 
        .setDebuggerEnabled(true) 
        .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) 



      mConnection= XMPPTCPConnection(config.build()) 
      mConnection!!.connect().login() 
+0

Ich weiß es, aber ich brauche es nicht bei der Verbindungsherstellung. Und ich muss den Sicherheitsmodus aktivieren! – TheEnigmist

0
W/System.err: Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb38b1400: Failure in SSL library, usually a protocol error 
W/System.err: error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER (external/boringssl/src/ssl/tls_record.c:192 0xa769d1aa:0x00000000) 

Ihre Android-Plattform nicht wie die SSL/TLS-Version Ihre Openfire verwendet.

+0

Ich sehe, kann ich irgendetwas tun, um das zu beheben? – TheEnigmist

Verwandte Themen