【发布时间】:2018-07-28 06:58:01
【问题描述】:
如何将 SSLSocket 与 socks5 代理一起使用?我使用带有代理的普通套接字作为底层。
此代码不起作用:
public void debugIP(Proxy proxy) throws IOException, NoSuchAlgorithmException, KeyManagementException {
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, null, null);
Socket underlying = new Socket(proxy);
InetSocketAddress proxyAddress = (InetSocketAddress) proxy.address();
underlying.connect(new InetSocketAddress("checkip.amazonaws.com", 80));
SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket(
underlying,
proxyAddress.getHostName(),
proxyAddress.getPort(),
true);
printInputStream(socket.getInputStream());
}
private void printInputStream(InputStream inputStream) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
这段代码抛出异常:
线程“main”javax.net.ssl.SSLException 中的异常:无法识别的 SSL 消息,明文连接?
没有 SSL,代码可以工作。
【问题讨论】: