在c ++代码中实现SSL隧道(WinSock)

时间:2012-04-26 12:04:27

标签: ssl winsock tunnel

我的应用程序在TCPIP连接方面同时是客户端和服务器。

Client1(externl)--- A --->我的应用--- B --->服务器1(外部)

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

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

目前,SSL是使用外部SSL隧道(stunnel)实现的。

Client1(externl)--- A ---> STUNNEL1 --->我的应用---> STUNNEL2 --- B - >服务器1(外部)

使用例如向A和B添加SSL openssl API是很多脏工作。太多了。

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

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中互相使用,以便管理员无法捕获流量?

1 个答案:

答案 0 :(得分:0)