title: Https Client fails with SSL Peer Shut down incorrectly
body: <p>The code below is supposed to ignore all certificates:</p>
  
  <pre><code>public class Application {
  
  public static void main(String... args) {
  
      System.out.println("Initiating... ");
  
      // Create a trust manager that does not validate certificate chains
      TrustManager[] trustAllCerts = new TrustManager[] { 
          new X509TrustManager() {     
              public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
                  return new X509Certificate[0];
              } 
              public void checkClientTrusted( 
                  java.security.cert.X509Certificate[] certs, String authType) {
                  } 
              public void checkServerTrusted( 
                  java.security.cert.X509Certificate[] certs, String authType) {
              }
          } 
      }; 
  
  
       // Ignore differences between given hostname and certificate hostname
      HostnameVerifier hv = new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) { return true; }
      };
  
      SSLContext sc = null;
      // Install the all-trusting trust manager
      try {
          sc = SSLContext.getInstance("SSL"); 
          sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
          HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
          HttpsURLConnection.setDefaultHostnameVerifier(hv);
      } catch (GeneralSecurityException e) {
      } 
      // Now you can access an https URL without having the certificate in the truststore
      try { 
          URL url = new URL("https://localhost:30009/iPG/c2b/multione"); 
          HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
          conn.setSSLSocketFactory(sc.getSocketFactory());
          conn.setHostnameVerifier(hv);
          InputStream is = conn.getInputStream();
          InputStreamReader isr = new InputStreamReader(is);
          BufferedReader br = new BufferedReader(isr);
  
          String inputLine;
  
          while ((inputLine = br.readLine()) != null) {
              System.out.println(inputLine);
          }
  
          br.close(); 
      } catch (Exception e) {
          e.printStackTrace();
      } 
  
  }
  
  }
  </code></pre>
  
  <p>However I keep getting the error:</p>
  
  <pre><code>javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
  at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1002)
  at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
  at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
  at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
  at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
  at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
  at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
  at post.Application.main(Application.java:66)
  Caused by: java.io.EOFException: SSL peer shut down incorrectly
  at sun.security.ssl.InputRecord.read(InputRecord.java:505)
  at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
  </code></pre>
  
  <p>I don't understand why this is the case. </p>