Java中的安全TCP连接

Tim*_*Tim 7 java security authentication tcp

我想知道在Java中保护TCP连接的最佳方法是什么.我希望与我的服务器通信只来自经过身份验证的客户端,并在可能的情况下加密传输的数据.

我需要注意和覆盖哪些问题,我可以使用哪些技术?

谢谢,

蒂姆.

Paŭ*_*ann 2

正如已经说过的,通常的方式是 SSL。默认情况下,这支持(强制)服务器身份验证和加密,客户端身份验证是可选的(例如,根据配置 - 服务器可以确保客户端经过身份验证)。

在Java中,您可以使用SSLSocket(和SSLServerSocket)(或各自的工厂类),或SSLEngine(如果您想做非阻塞IO)。或者一些更高级别的 API 在幕后使用它。

另一种选择是SSH协议。这允许加密且(通常)双方验证的连接,通过该连接可以路由多个通道。这通常用于远程命令执行或文件传输,但也允许端口转发。

在 Java 中,这将由JSch等(在客户端)实现。我知道没有服务器端 Java 实现 - 但您可以使用普通的 OpenSSH 服务器并将端口转发到您的 Java 服务器进程。