У меня есть интересная проблема с безопасностью сети, которую я не могу найти наилучшим способом атаки.
Мне нужно предоставить способ, позволяющий двум компьютерам (A и B), которые находятся за брандмауэрами, устанавливать безопасное соединение друг с другом, используя только общий ненадежный сервер-посредник в Интернете (где-то вроде RackSpace). (сервер считается ненадежным, потому что клиенты за брандмауэрами не будут ему доверять, поскольку он находится на открытом сервере) Я не могу настроить параметры брандмауэра, чтобы позволить сетям напрямую соединяться друг с другом, потому что соединения неизвестны заранее время.
Это очень похоже на проблему подключения NAT к NAT, подобную той, которая решается инструментами помощи удаленного рабочего стола (crossloop, copilot и т. Д.).
То, что я действительно хотел бы найти, - это способ открыть SSL-соединение между двумя хостами и иметь соединение с публичным сервером. Предпочтительно, когда хост A пытается подключиться к хосту B, он должен предоставить токен, который брокер может проверить с хостом B перед установлением соединения.
Чтобы добавить еще одну складку, механизм соединения должен поддерживать два типа связи. Во-первых, HTTP-запрос / ответ к веб-службе REST и второе постоянное сокетное соединение (я) для передачи сообщений в режиме реального времени.
Я посмотрел на методы, о которых я знаю, такие как OpenSSL, с использованием сертификатов, OAuth и т. Д., Но я не вижу ничего, что вполне соответствует тому, что мне нужно.
Кто-нибудь еще обращался с чем-то подобным раньше? Есть указатели?