Прокси-сервер SOCKS5 с использованием SSLSocket

У меня есть приложение клиент/сервер, которое удаленно подключается к серверу через Java SSLSocket.

Я пытаюсь реализовать необязательный режим, который позволяет подключаться через аутентифицированный прокси-сервер SOCKS v5.

Я пытался использовать соответствующий учебник, но он не не упоминайте ничего конкретно о SSL.

Я пытался установить общесистемные свойства («socksProxyHost» и «socksProxyPort»), но, похоже, это ничего не дает.

Мой следующий подход заключался в использовании фабричного метода в SSLSocketFactory:

            String proxyHost = Config.prefs.get("PROXY_NAME", "localhost");
            int proxyPort = Config.prefs.getInt("PROXY_PORT", 1080);
            InetSocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
            Socket underlying = new SSLSocket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
            underlying.connect(new InetSocketAddress(getHost(), getPort()));
            socket = (SSLSocket) factory.createSocket(
                    underlying,
                    getHost(),
                    getPort(),
                    true);

Но проблема с этим подходом заключается в том, что метод createSocket требует, чтобы базовый сокет был уже подключен, и мой сервер не будет принимать соединения без SSL.

Как лучше всего подключиться к моему удаленному серверу с помощью SOCKS? Кроме того, я почти не знаю, как предоставить имя пользователя/пароль для аутентифицированных SOCKS в этой системе.

Спасибо!


person Ryan N    schedule 25.04.2011    source источник


Ответы (1)


person    schedule
comment
т.е. передать хост proxy и порт конструктору сокета, а не фактический целевой хост и порт. - person Jakub Holý; 02.12.2016