Tag: ssl
javax.net.ssl.SSLHandshakeException: “Remote host closed connection during handshake” opening an HTTPS page with HTMLUnit
While trying to fetch the HTTPS page https://portal.mvp.bafin.de/database/AnteileInfo/ using HTML Unit 2.23 under Java 7, Ubuntu Linux, I received the following exception: Remote host closed connection during handshake
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:880) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1262) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1289) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1273) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:394) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) at com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.connectSocket(HtmlUnitSSLConnectionSocketFactory.java:189) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71) at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:183) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1358) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1275) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:382) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:304) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:451) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:436) at fetchers.bafin.SSLTest.main(SSLTest.java:16) Caused by: java.io.EOFException: SSL peer shut down incorrectly at sun.security.ssl.InputRecord.read(InputRecord.java:352) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:861) ... 23 more |
The code was the following
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; public class SSLTest { public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException { final String URL = "https://portal.mvp.bafin.de/database/AnteileInfo/"; final WebClient wc = new WebClient(); // the code should be ok without the following line, // but even with it, it doesn't work // wc.getOptions().setSSLClientProtocols(new String[]{"TLSv1.1","TLSv1.2"}); final HtmlPage mainPage = wc.getPage(URL); } } |
The problem was solved upgrading to Java 8. I upgraded to Java 8 after reading Oracle’s blog about HTTPS … Continue reading “javax.net.ssl.SSLHandshakeException: “Remote host closed connection during handshake” opening an HTTPS page with HTMLUnit”