Tag: 隧道

HttpClient:如何从现有连接获取底层套接字?

我正在使用HttpClient 4.02通过代理创建连接(使用CONNECT方法)来连接到远程服务器的连接。 HttpClient非常方便,但我是API的新手,无法看到如何获取隧道连接的底层Socket 。 以下代码取自: http : //svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.0.1/httpclient/src/examples/org/apache/http/examples/client/ClientExecuteProxy.java // make sure to use a proxy that supports CONNECT HttpHost target = new HttpHost(“target.server.net”, 443, “https”); HttpHost proxy = new HttpHost(“some.proxy.net”, 8080, “http”); // general setup SchemeRegistry supportedSchemes = new SchemeRegistry(); // Register the “http” and “https” protocol schemes, they are // required by the default […]

无法通过代理隧道。 代理返回HTTP / 1.1 503服务不可用

我想连接到Intranet服务器,我需要连接的URL是: URLConnection conn = new URL(“https://mywebsite”).openConnection(); 当我通过以下方式调用connect方法时:` conn.connect(); 我收到以下exception: java.io.IOException: Unable to tunnel through proxy. Proxy rerurns HTTP/1.1 503 Service Unavailable” at sun.net.www.protocol.httpHttpURLConnection.doTunneling 我怎么能解决这个例外,我已经尝试过在网上发布的许多解决方案,但没有任何运气。

SSLSocket在另一个SSLSocket上

我正在为一个系统编写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:未知协议(external / openssl / ssl / s23_srvr.c:589 0xad12b3f0:0x00000000) 谁知道我怎么能做到这一点? 我知道你的第一个问题是为什么将SSL层叠在SSL上,但我正在为需要它的EXISTING系统编写客户端。 任何帮助将非常感激。 Zhubin

转发端口

我有一个简单的要求,即基于套接字的通信的软件级端口转发/隧道。 我有一个使用套接字的源服务器和端口。 这是一个java程序,可以在windows和linux中运行,这是无关紧要的。 我有设备继续向此端口发送数据。 可能存在双向通信 我想将此数据重定向到另一个远程服务器和端口。 因此,对于客户,每当我移动我的应用服务器时,他们都不必担心更改IP地址。 是否有任何工具/ deamon /服务程序可用于配置和执行此操作? 我试过SSH,但根据我的理解,这需要一个支持SSH协议的服务器。 就我而言,这不适用。 我也尝试过使用JSch,但这又是java格式的SSH实现。 有人会抛出一些指针吗? 是否可以在linux中使用iptables NAT?

无法通过代理隧道。 代理通过https返回“HTTP / 1.1 407”

我面临着java6 / 8的奇怪行为。 我尝试隧道通过需要基本用户身份validation的代理。 通过标准的java Authenticator执行此操作。 如果我尝试访问https url作为第一个url,则抛出exception: java.io.IOException:无法通过代理进行隧道传输。 代理返回“需要HTTP / 1.1 407代理身份validation” 但是,如果我首先访问http URL,然后访问https URL,则https访问可以正常工作。 鉴于该代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; import java.net.URL; public class ProxyPass { public ProxyPass( String proxyHost, int proxyPort, final String userid, final String password, String url […]

Java中的简单SSH隧道

我想用Java创建一个SSH隧道。 我在另一篇文章中发现了不少Java SSH库。 在深入研究每个选项之前,也许有人可以给我一些他们如何做到的代码片段,或者至少告诉我哪个客户端库最适合。 我只需要隧道。 我不需要文件传输,终端仿真等等。是否有简单的几行代码可以转发服务器上的端口以在我的客户端的localhost适配器上工作? 理想情况下,客户端和服务器都是Java,但我现在只会满足于客户端。