简体   繁体   English

无法在Android上使用Smack 4.2与Openfire 4.1.3服务器建立TLS连接:SSLProtocolException:SSL握手中止

[英]Cannot establish TLS connection to Openfire 4.1.3 server with Smack 4.2 on Android: SSLProtocolException: SSL handshake aborted

I'm trying to connect to my Openfire 4.1.3 server with Smack 4.2, the current config works ok: 我正在尝试使用Smack 4.2连接到我的Openfire 4.1.3服务器,当前配置可以正常运行:

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

If I try to connect with SecurityMode.required I can't establish any connection. 如果尝试使用SecurityMode.required连接,则无法建立任何连接。 I read aroud about setting CA on device, but I don't know what to do. 我读过有关在设备上设置CA的信息,但我不知道该怎么办。 Any help? 有什么帮助吗?

EDIT: These are the new lines added for trying to connect with SecurityMode.required 编辑:这些是为尝试与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());

It generates this error 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

setUsernameAndPassword() method is missing. setUsernameAndPassword()方法丢失。

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



            mConnection= XMPPTCPConnection(config.build())
            mConnection!!.connect().login()
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)

Your Android platform does not like the SSL/TLS version your Openfire uses. 您的Android平台不喜欢您的Openfire使用的SSL / TLS版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 OkHttp SSLProtocolException:SSL握手在Android 4上中止 - OkHttp SSLProtocolException: SSL handshake aborted on android 4 Android Smack SSL / TLS连接到具有CA证书的XMPP Ejabberd服务器 - Android Smack SSL/TLS connection to XMPP Ejabberd server with CA Certificate 如何解决javax.net.ssl.SSLProtocolException:SSL握手已中止 - How to resolve javax.net.ssl.SSLProtocolException: SSL handshake aborted Android Volley com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手已中止 - Android Volley com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL 握手中止: - com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: 尝试从 android 应用程序登录到我的服务器时出现“无法建立 ssl 连接”或“SSL 握手中止” - Getting "The ssl connection could not be established" or "SSL handshake aborted" when trying to log in from android app to my server Android Smack与Openfire服务器聊天 - Android Smack chat with openfire server javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL 握手中止: - javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手已中止 - javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted Android 4.4.2 SSL握手中止 - Android 4.4.2 SSL handshake aborted
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM