Java:加密的服务器/客户端双向通信?

Posted

技术标签:

【中文标题】Java:加密的服务器/客户端双向通信?【英文标题】:Java: encrypted server/clients bi-directional communication? 【发布时间】:2011-12-14 08:01:35 【问题描述】:

在服务器和多个客户端之间建立加密双向通信的最佳方式是什么?

服务器有持久化数据库,会向客户端发送数据,客户端会发回数据。这必须加密,以最好地防止网络嗅探工具等。

Netty 服务器会是一个很好的选择吗?我可以使用带有 netty 和客户端应用程序的套接字连接到服务器吗?

谢谢。

【问题讨论】:

【参考方案1】:

如果您的意思是通信协议是 HTTP,并且您使用的是标准 HTTP 环境(HTTP 服务器、Servlet、JSP 等),请使用 HTTPS 通信。它保证双向加密和保护您的数据。

【讨论】:

还有哪些非http解决方案?我问这个是因为我读到获得 https 证书非常昂贵。 您无需使用证书颁发机构即可使用 SSL。如果您将服务器的公钥捆绑在客户端中,则不需要 CA……这意味着您无需支付任何费用。 使用 HTTPS 比使用自己的内部加密或自己使用 Java 加密 API 更快、更容易、更安全。您可以颁发自己的密钥,甚至购买 SSL 证书也不会花费太多,请在 google 上搜索。投票赞成这个答案。【参考方案2】:

您可以加密套接字并通过网络发送您喜欢的任何协议。 HTTPS 只是其中之一。例如,我们在 netty 之上实现了 SMTPS,没有任何问题。

您只需要定义协议,编写编码器/解码器并在管道中使用 SslHandler 添加它们。就是这样。

【讨论】:

以上是关于Java:加密的服务器/客户端双向通信?的主要内容,如果未能解决你的问题,请参考以下文章

可可分布式对象中的双向通信

c#命名管道双向通信

Android IPC进程间通信之AIDL双向通信

通过 ssh 隧道使用套接字进行双向通信

php只能做网站?基于swoole+websocket开发双向通信应用

基于.NET 7 的 WebTransport 实现双向通信