プロキシサーバーに対してSSLSocketを開き、トンネルハンドシェイクを実行してから、トンネル上に別のSSLSocketを作成する必要があるシステム用のAndroidクライアントを作成しています。トンネルを作成するための私のコードは次のとおりです。
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:不明なプロトコル(external / openssl / ssl / s23_srvr.c:589 0xad12b3f0:0x00000000)
誰かが私がこれを達成する方法を知っていますか?最初の質問はなぜSSLを介してSSLをレイヤー化するのかということですが、私はそれを必要とする既存のシステム用のクライアントを作成しています。
どんな助けでも大歓迎です。ズビン