0

就 TCPIP 连接而言,我有一个既是客户端又是服务器的应用程序。

Client1(externl) ---A---> 我的应用程序 ---B---> Server1(external)

连接 A 和 B 主要使用 CAsyncSocket 完成,但也使用 CSocket(超过 1 个 A 和超过 1 个 B)。

我的任务是将 SSL 添加到 A 和 B。为了安全要求,我们必须摆脱 stunnel - 管理员可以操纵隧道或监听隧道和我的应用程序之间的连接。不要问,但这是要求和想法,为什么必须在我的应用程序中完成,而不是使用 stunnel。

目前 SSL 是通过外部 SSL 隧道(stunnel)实现的。

Client1(externl) ---A---> STUNNEL1 ---> 我的应用程序 ---> STUNNEL2 ---B--> Server1(external)

使用例如openssl API 向A 和B 添加SSL 是一项繁重的工作。太多了。

所以我想.. 是否有可能在我的应用程序中创建 SSL 隧道(而不是 stunnel)。并让现有的套接字连接到隧道,但让 Windows 管理员无法监听 App 和隧道之间的流量?

NOW is:

My app now:
Listens 192.168.1.1:5000
Listens 192.168.1.1:5001

Connects to 192.168.1.2:9000
Connects to 192.168.1.2:9001

New schema:
Listens 127.0.0.1:15000
Listens 127.0.0.1:15001
ThreadTunnel listens 192.168.1.1:5000 (forwards to  127.0.0.1:15000)
ThreadTunnel listens 192.168.1.1:5001 (forwards to  127.0.0.1:15001)

Connects to 127.0.0.1:19000
Connects to 127.0.0.1:19001
ThreadTunnel listens 192.168.1.1:19000 (forwards to  192.168.1.2:9000 )
ThreadTunnel listens 192.168.1.1:19001 (forwards to  192.168.1.2:9001 )

This schema would be ideal but problem is that admin could listen traffic between

127.0.0.1:15000  <-> 192.168.1.1:5000  
or 127.0.0.1:19000 <-> 192.168.1.1:19000 

有什么方法可以让 CSocket/CAsyncSocket 和 OpenSSL 在同一个 .exe 中相互通信,这样管理员就无法捕获流量?

4

1 回答 1

0

这篇 CodeProject 文章似乎回答了这个问题: http: //www.codeproject.com/Articles/3855/CAsyncSocketEx-Replacement-for-CAsyncSocket-with-p

于 2013-02-22T20:58:04.297 回答