首页 文章

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

提问于
浏览
0

我的应用程序在TCPIP连接方面既是客户端又是服务器 .

Client1(externl)--- A --->我的应用--- B ---> Server1(外部)

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

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

目前,SSL通过外部SSL隧道(stunnel)实现 .

Client1(externl)--- A ---> STUNNEL1 --->我的应用---> STUNNEL2 --- B - > Server1(外部)

用例如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 回答

相关问题