Я пишу клиент Android для системы, которая требует, чтобы я открыл SSLSocket для прокси-сервера, сделал туннельное рукопожатие, а затем создал ДРУГОЙ SSLSocket через туннель. Вот мой код для создания туннеля:
SSLSocketFactory sslsocketfactory = securityService.getSslContextNoCerts().getSocketFactory();
SSLSocket sslSocket = (SSLSocket) sslsocketfactory.createSocket(proxyAddress.getAddress(),
proxyAddress.getPort());
sslSocket.setEnabledProtocols(new String[] { SecurityService.TLS10 });
sslSocket.setEnabledCipherSuites(SecurityService.CIPHERS);
sslSocket.startHandshake();
Затем я провожу туннельное рукопожатие, а затем:
SSLSocketFactory sslsocketfactory = securityService.getSslContext().getSocketFactory();
hostSocket = (SSLSocket) sslsocketfactory.createSocket(tunnel,
InetAddress.getByAddress(remoteAddress.getIpAddress()).getHostAddress(),
remoteAddress.getPort(), false);
hostSocket.setUseClientMode(false);
hostSocket.setNeedClientAuth(true);
securityService.setEnabledProtocols(hostSocket);
hostSocket.setEnabledCipherSuites(SecurityService.DATASESSION_CIPHERS);
hostSocket.startHandshake();
На этом этапе я получаю исключение SSLProtocolException с этим сообщением:
ошибка: 140760FC: подпрограммы SSL: SSL23_GET_CLIENT_HELLO: неизвестный протокол (внешний / openssl / ssl / s23_srvr.c: 589 0xad12b3f0: 0x00000000)
Кто-нибудь знает, как я могу этого добиться? Я знаю, что ваш первый вопрос: зачем использовать SSL поверх SSL, но я пишу клиент для СУЩЕСТВУЮЩЕЙ системы, которая требует этого.
Любая помощь приветствуется. Жубин