gpt4 book ai didi

java - SSLSocket 覆盖另一个 SSLSocket

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:17 26 4
gpt4 key购买 nike

我正在为一个系统编写 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:未知协议(protocol)(外部/openssl/ssl/s23_srvr.c:589 0xad12b3f0:0x00000000)

有人知道我怎样才能做到这一点吗?我知道您的第一个问题是为什么在 SSL 之上分层 SSL,但我正在为需要它的现有系统编写客户端。

任何帮助将不胜感激。朱斌

最佳答案

好的,我终于解决了这个问题。出于某种原因,当我使用 org.apache.harmony.xnet.provider.jsse.OpenSSLProvider(Android 默认 SSL 提供程序)时,SSL over SSL 不起作用。所以我切换到 org.apache.harmony.xnet.provider.jsse.JSSEProvider,现在一切正常。

关于java - SSLSocket 覆盖另一个 SSLSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com