vitus_wagner (
vitus_wagner) wrote2015-06-12 05:54 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Entry tags:
SNIproxy
Нашел тут замечательный инстурмент SNIProxy
Позволяет решить задачу раскидывания https-траффика по машинам (в том числе виртуальным), сидящим за однм внешним IP. Причем полноценного такого раскидыванрия. когда каждый сервер имеет собственные ключи и хранит их у себя, может сам проверять клиентские сертификаты etc.
Под Bananian собралось, тестирвоать еще не тестировал, потому что для тестирования нужно иметь хотя бы два https-ных сервера, в локальной сети. А у меня в ЭТОЙ сети нет ни одного.
Хотя, конечно, такую штуку надо держать на роутере, а не на одном из серверов внутри сети. Но собирать ее под dd-wrt или openwrt мне ломы.
Позволяет решить задачу раскидывания https-траффика по машинам (в том числе виртуальным), сидящим за однм внешним IP. Причем полноценного такого раскидыванрия. когда каждый сервер имеет собственные ключи и хранит их у себя, может сам проверять клиентские сертификаты etc.
Под Bananian собралось, тестирвоать еще не тестировал, потому что для тестирования нужно иметь хотя бы два https-ных сервера, в локальной сети. А у меня в ЭТОЙ сети нет ни одного.
Хотя, конечно, такую штуку надо держать на роутере, а не на одном из серверов внутри сети. Но собирать ее под dd-wrt или openwrt мне ломы.
no subject
no subject
no subject
no subject
no subject
sniproxy не выполняет никаких криптографических операций. Она смотрит на расширение SNI которое не зашифровано, и, в зависимости от этого, перенаправялет соединение тому или иному внутреннему серверу.
То есть с точки зрения внутренних серверов всё выглядит так, как будто с ними соединение осуществляется непосредственно, по отдельному IP.
У этих серверов могут быть разные реализации TLS, они могут работать на разных операционных системах, иметь разные хранилища сертификатов и даже разный административный контроль. И при этом входной IP адрес и порт - общие.
no subject
А так, как правило для целей tcp-проксирования ставят HAProxy. Он умеет очень многое: тот же ProxyProtocol, который отправляет на backend ip-адрес клиента в режиме TCP (без терминации ssl!) или, к примеру, можно сделать так, что на 80 порту браузеру будет отдаваться nginx/apache, а ssh-клиенту — sshd.
no subject
Не хватает протокола, обратного SOCKS. В SOCKS мы открытым текстом указываем, с кем хотим соединиться, и дальше соединение как обычно. А в обратном SOCKS обратный прокси типа SNIProxy открытым текстом указывает, кто с нами хочет соединиться, и дальше соединение как обычно.
no subject
Зачем мне видеть IP пользователя, если я могу увидеть его клиентский сертификат? А вот с этим у обычного http-прокси, терминирующего SSL-соединение - проблема. Ну то есть пробросить сертификат на бэкэнд он может, но бэкэнду придется поверить ему на слово, что именно этот сертификат был предъявлен при хендшейке.