У меня есть приложение клиент/сервер, которое удаленно подключается к серверу через 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 в этой системе.
Спасибо!