【问题标题】:Implementing RFB with SSL without CA在没有 CA 的情况下使用 SSL 实现 RFB
【发布时间】:2012-03-01 16:25:12
【问题描述】:

我正在尝试使用 SSL 实现 RFB 以进行身份​​验证和加密。

但 SSL 需要证书(我没有证书,因为它只是 PC 和 Android 正在通信,无需中间服务器)。

我不需要服务器身份验证,我需要客户端 身份验证,如何在不使用证书的情况下获取它。

如果没有办法摆脱证书,是否有可能 在 PC 和 Android 之间通信时使用证书, 如果是,那怎么办?

在项目中迷路了,有人可以指导我吗?寻找解决方案,但没有运气。

提前致谢。

【问题讨论】:

标签: java android ssl


【解决方案1】:

如果您想要 SSL 的安全性,您确实需要服务器身份验证(您可以颠倒客户端/服务器的角色,即让 SSL 服务器成为 TCP 客户端,反之亦然,但这可能过于复杂)。

如果您控制应用程序,服务器上的自签名证书就可以正常工作。如果您还需要客户端证书身份验证,您也可以为您的客户提供一个。为您的应用程序构建一个小型 CA 可能更方便。有一些工具可以帮助解决这个问题,例如 OpenSSL 的 CA.pl 或 TinyCA。

生成服务器证书后,您需要将客户端配置为信任它。不要使用信任任何东西的TrustManager(您可能会遇到一些示例代码,包括此处的 SO):这会破坏身份验证的目的,并使您的 SSL 连接容易受到 MITM 攻击。

【讨论】:

  • 是否可以在我的电脑上设置自签名证书?因为我正在尝试在没有中间服务器的情况下实现远程桌面共享应用程序。那么普通PC(非服务器)和Android之间是否可以使用SSL?
  • SSL 是否仅用于 HTTP ?或者我们可以用它来保护PC(运行windows xp/Vista/7)和android之间的通信?
  • 是的,自签名证书(或您自己的 CA 颁发的证书)的唯一问题是您需要自己将它们显式导入到您的设备上。您可以在您喜欢的任何设备之间使用 SSL(如果您不想自己编写 SSL 堆栈,则提供支持),包括 PC 和 Android 设备。它原则上可以用于您通过 TCP 使用的任何协议,而不仅仅是 HTTP。
  • 好的,有任何关于实施的指示吗?比如,我应该如何开始实施 RFB 和 SSL。因为我只能在 HTTP 上找到实现。基本的事情是 PC 和 Android 之间的连接是通过 TCP/IP 完成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 2013-10-15
  • 1970-01-01
相关资源
最近更新 更多