使用代理

时间:2015-07-17 21:12:24

标签: java ssl proxy jackson

我使用Jackson的ObjectMapper类向URL发出请求。这在我的本地机器(Mac)上工作正常,但是从我的Unix VM失败了。不同之处在于我的VM位于防火墙之后,而我的mac则不是。但是,两台计算机都可以访问同一个代理。

似乎可能涉及一些SSL问题。谁能发现这个问题?

在两个部署中使用以下系统属性:

System.setProperty("http.proxyHost", _config.getProxyHost());
System.setProperty("http.proxyPort", _config.getProxyPort());
System.setProperty("https.proxyHost", _config.getProxyHost());
System.setProperty("https.proxyPort", _config.getProxyPort());

以下是unix框中的完整堆栈跟踪:

Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:189)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1511)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at java.net.URL.openStream(URL.java:1038)
at com.fasterxml.jackson.core.JsonFactory._optimizedStreamFromURL(JsonFactory.java:1420)
at com.fasterxml.jackson.core.JsonFactory.createParser(JsonFactory.java:730)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2137)

当我使用时:-Djavax.net.debug = ssl我看到以下内容:

main, WRITE: TLSv1.2 Handshake, length = 286
main, handling exception: java.net.SocketException: Connection reset
main, SEND TLSv1.2 ALERT:  fatal, description = unexpected_message
main, WRITE: TLSv1.2 Alert, length = 2
main, Exception sending alert: java.net.SocketException: Broken pipe
main, called closeSocket()

1 个答案:

答案 0 :(得分:1)

  

不同之处在于我的VM位于防火墙后面,而我的mac不在。但是,两台计算机都可以访问同一个代理。

     

main,处理异常:java.net.SocketException:连接重置

对等方关闭了握手内部的连接。鉴于工作版本和非工作版本之间的差异是防火墙之间的防火墙可能阻止访问,即连接重置是由防火墙发出的。

相关问题