SOCKS5 Прокси, използващ SSLSocket

Имам приложение клиент/сървър, което отдалечено се свързва със сървър чрез SSLSocket на Java.

Опитвам се да внедря незадължителен режим, който позволява връзки чрез удостоверен 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
т.е. прехвърлете прокси хоста и порта на конструктора на сокета, а не действителния целеви хост и порт. - person Jakub Holý; 02.12.2016