0

如何保护普通套接字通信?我编写了一个只能连接到专用 SSL 端口(5223)(使用 SSLSocket)的 Jabber 客户端。正常的方法是连接到 Jabber 标准端口 5222 并请求starttls. 我怎样才能做到这一点?

4

2 回答 2

1

我不完全确定您在问什么,但是您可以使用SSLSocketFactory.createSocket()方法在现有的普通(非安全)套接字上分层一个安全套接字。这是使用 starttls 之类的“升级”套接字的一种方法。但这是以艰难的方式做事。几乎可以肯定,您的 XMPP 库将提供对此类功能的高级访问。

于 2012-01-15T22:43:10.367 回答
1

期望管理:我没有在 Jabber 上尝试过这个。但它适用于 GMail 的 SMTP 服务器,所以也许......

以下是如何将套接字升级为 SSL 套接字,socket原始(非 TLS)连接在哪里:

SSLSocket sslSocket = (SSLSocket) ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(
                       socket, 
                       socket.getInetAddress().getHostAddress(), 
                       socket.getPort(), 
                       true);
InputStream inputStream = sslSocket.getInputStream();
OutputStream outputStream = sslSocket.getOutputStream();
// reads from the socket
Scanner scanner = new Scanner(inputStream);
// writes to the socket
OutputStream outputStream = new BufferedOutputStream(outputStream);
于 2013-01-18T17:00:12.117 回答