【发布时间】:2010-03-09 22:46:55
【问题描述】:
我有两个 java 应用程序需要通过加密的 TCP 套接字相互通信,但它们不需要相互验证(一个会接受()来自另一个的连接)。谁能指点我一个教程/code-sn-p 来帮助我设置这些?
我正在寻找相当简单的东西,并且我不想提供任何密钥库或信任库材料。
编辑:我应该在这里更具体。我的意思是他们不必通过 SSL 相互验证。我必须在应用程序级别进行一些重要的身份验证,因此我不能使用任何类型的基于 SSL 的身份验证方案。
此外,到目前为止(截至 2010 年 3 月 10 日中午)发布的答案中的某些链接需要密钥库文件。有没有一种简单的方法可以以编程方式生成我需要的密钥?
【问题讨论】:
-
如果你的服务器不能相互认证,为什么还要麻烦加密呢?要么是可信的本地网络(在这种情况下不需要加密),要么是不可信的(在这种情况下需要进行身份验证以防止中间人攻击)。
-
没有身份验证的加密可能有用的原因有很多。想象一个内部总线,它只物理连接两个安全服务器,但可能容易受到远程电磁窥探的影响。你知道你在和谁说话,你只是不应该发送明文。或者可能是消息传递系统受 FOI 法的约束,因此即使您的整个设施在技术上是安全的,您也不应该将客户数据放在上面。 IMO 仅仅因为您没有向 Verisign 付款就让所有人相信加密在某种程度上是无效的,这是一个不好的趋势。
标签: java sockets encryption ssl