就 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 中相互通信,这样管理员就无法捕获流量?