У меня есть приложение, которое является одновременно клиентом и сервером с точки зрения соединения TCPIP.
Client1(внешний) ---A---> Мое приложение ---B---> Server1(внешний)
Соединения A и B в основном выполняются с помощью CAsyncSocket, но также и с CSocket (есть более 1 A и более 1 B).
Моя задача - ДОБАВИТЬ SSL к A и B. Мы должны избавиться от stunnel по требованиям безопасности — администратор может манипулировать туннелем или прослушивать соединения между туннелем и My App. Не спрашивайте, но это требование и идея, почему это должно быть сделано в моем приложении, а не с помощью stunnel.
В настоящее время SSL реализован с внешним туннелем SSL (stunnel).
Client1 (внешний) ---A---> STUNNEL1 ---> Мое приложение ---> STUNNEL2 ---B--> Server1 (внешний)
Добавление SSL к A и B, например. 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, чтобы администратор не мог перехватывать трафик?