【发布时间】:2011-08-16 02:29:40
【问题描述】:
我想在两个 JAVA 服务器之间实现加密通信,两者都在我的控制之下。我想到了三种架构,希望得到您的意见,了解它们的优缺点。
架构 1: 每当我调用远程方法时,我不会将参数作为纯文本传递,而是作为序列化的 CipherText-Object 传递。我将为此使用 ESAPI 库,但实际实现并不重要。重要的是 CipherText-Object 包含使用对称密钥加密的任意数据,包括用于身份验证的 MAC。对称密钥可作为两台服务器上的预共享密钥使用。
架构 2: 我不关心应用程序级别的加密,而是将其委托给传输层。这可能是 VPN 隧道或某种受支持的服务器到服务器加密。目前,我没有太多关于现代应用程序服务器上可用内容的信息。也欢迎对此提供意见。
架构 3: 使用 javax.rmi.ssl 通过 SSL 使用 RMI。
感觉架构 1 很复杂,实施起来很痛苦。架构 2 将加密留给应用服务器。作为应用程序开发人员,我无法控制这些功能的配置。这很糟糕,因为我想确保在没有适当加密的情况下无法使用该应用程序。架构 3 似乎是最好的方法,但我对这项技术没有经验。
您如何评价这三种架构?我是否错过了更好的实现方式?主要目标是确保安全的加密通信,但生成的源代码的复杂性、性能问题等当然也是一个问题。
【问题讨论】:
-
如果允许啦啦队,那么我同意你关于#3 的结论。
标签: java security encryption ssl rmi