Создать неподключенный SSLSocket поверх существующего сокета в Java - PullRequest
0 голосов
/ 13 декабря 2018

Я реализую собственную фабрику сокетов TLS через прокси-сервер SOCKS.Среди других методов, которые я должен переопределить, это Socket createSocket(), который просто создает неподключенный сокет, который будет подключен где-то позже в коде.

То есть на фабрике сокетов TLS без SOCKS-прокси, способ его реализации следующий:

@Override
public Socket createSocket() throws IOException, UnknownHostException {
  // Initialize my SSL Context
  SSLContext sslCtx = initializeSSLContext();
  SSLSocketFactory socketFactory = sslCtx.getSocketFactory();
  // Return an unconnected socket
  return socketFactory.createSocket();
}

В моей фабрике сокетов TLS over SOCKS эквивалент примерно такой:

@Override
  public Socket createSocket() throws IOException, UnknownHostException {
    // proxy is an instance of java.net.Proxy
    Socket socks = new Socket(proxy);

    // Initialize my SSL context
    SSLContext sslCtx = initializeSSLContext();
    SSLSocketFactory socketFactory = sslCtx.getSocketFactory();
    return socketFactory.createSocket(socks, ????, ????, true);
  }

Как я упоминал ранее, мне нужно иметь возможность создавать сокет, не подключая его.SSLSocketFactory предоставляет два метода для создания сокетов поверх существующего, но оба предполагают, что вы знаете host:port, к которому вы подключаетесь.

Есть ли способ создать сокет TLS поверх существующего сокета (прокси)но без предоставления целевого хоста?

Заранее спасибо

1 Ответ

0 голосов
/ 13 декабря 2018

Используйте SSLSocketFactory.createSocket() для создания неподключенного сокета.Проверьте документы здесь для получения более подробной информации SSLSocketFactory

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...