2015-01-08 199 views
0

我试图加密从client1到client2的消息,但它不能通过点对点完成;因为动态的IP问题。处理SSL客户端到服务器到客户端的最佳方式(relay?)

我已决定使用中央服务器,但我不确定服务器是否应该中继SSL握手以及之后的任何后续加密消息(从client1到client2)。我想的另一种选择是让服务器将client2的IP提供给client1,并让client1发起直接连接,并直接执行SSL握手。

或者也许有更好的方法来做到这一点?

这里是2流,我画了起来:

enter image description here

OR

enter image description here

回答

1

使用两个客户端之间的直接连接,并使用服务器,旨在便利IP的发现,是尽可能最好的选择。 Client1可以尝试连接到Client2,如果失败,则客户端可以切换角色并让Client2尝试连接到Client1。

如果无法在任一方向进行直接连接(例如,两个客户端都在阻止连接的路由器/防火墙后面,并且常用的NAT打孔技术无法打开它们),则服务器可以充当中继器,类似于配置为使用代理服务器时浏览器仍然可以连接到HTTPS服务器的方式。只要服务器原样依赖SSL消息,并且客户端不验证TCP数据包的源IP地址,则它将起作用。但是,如果客户端验证源地址,则每个客户端必须在其自身和服务器之间建立单独的SSL会话,其中Client1将加密数据发送到服务器,该服务器解密数据并在数据重新加密时发送给客户端2,反之亦然。

相关问题