繁体   English   中英

Android SSL TLS连接到XMPP服务器

[英]Android SSL TLS connection to XMPP server

我正在尝试连接到需要“加密(SSL或TLS)”的XMPP服务器。 我无法使用Smack或其他第三方库(学校项目)

这是我的Java代码,用于初始化SSL套接字:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keyStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustManagerFactory.getTrustManagers(), new SecureRandom());
socket = sslContext.getSocketFactory().createSocket(HOST, PORT);
socket.setKeepAlive(true);

如果我尝试在套接字上打开流:

socket.getOutputStream()

我收到此错误:

javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x76cb46a0: Failure in SSL library, usually a protocol error

error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:766 0x72fb3d74:0x00000000)

at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448)

有人知道问题出在哪里吗?

通过简短地了解XMPP核心规范 ,您似乎无法简单地使用套接字并将其立即升级到TLS。 相反,您必须先使用某种STARTTLS命令,然后才能升级到TLS。 这类似于SMTP,IMAP等中的显式TLS。

有关更多详细信息,请参见规格 您可以在此处找到一些简短的信息。

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM