Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8205333

Http connection fails with sun.security.provider.certpath.SunCertPathBuilderExce

XMLWordPrintable

      ADDITIONAL SYSTEM INFORMATION :
      Microsoft Windows [Version 6.1.7601]

      java version "11-ea" 2018-09-25
      Java(TM) SE Runtime Environment 18.9 (build 11-ea+17)
      Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11-ea+17, mixed mode)

      A DESCRIPTION OF THE PROBLEM :
      When I run java program with Oracle JDK 10.0.1 it works fine.
      When I run same program with Oracle JDK 11-ea+17 it fails with exception.

      REGRESSION : Last worked in version 10.0.1

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run following java program


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      It prints response from HTTP post request:
      {"error":{"error_code":5,"error_msg":"User authorization failed: no access_token passed.","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"groups.getById"},{"key":"group_ids","value":"1"}]}}
      ACTUAL -
      Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.ssl.Alerts.getSSLException(Alerts.java:198)
      at java.base/sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1974)
      at java.base/sun.security.ssl.Handshaker.fatalSE(Handshaker.java:345)
      at java.base/sun.security.ssl.Handshaker.fatalSE(Handshaker.java:339)
      at java.base/sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1968)
      at java.base/sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1777)
      at java.base/sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:264)
      at java.base/sun.security.ssl.Handshaker.processLoop(Handshaker.java:1098)
      at java.base/sun.security.ssl.Handshaker.processRecord(Handshaker.java:1026)
      at java.base/sun.security.ssl.SSLSocketImpl.processInputRecord(SSLSocketImpl.java:1137)
      at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1074)
      at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
      at java.base/sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1402)
      at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1429)
      at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
      at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567)
      at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
      at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:163)
      at main.java.VkApiCall.main(VkApiCall.java:15)
      Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
      at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:290)
      at java.base/sun.security.validator.Validator.validate(Validator.java:264)
      at java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:343)
      at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:226)
      at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:133)
      at java.base/sun.security.ssl.ClientHandshaker.checkServerCerts(ClientHandshaker.java:1947)
      ... 14 more
      Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
      at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
      at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
      at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
      ... 20 more

      ---------- BEGIN SOURCE ----------
      import java.io.*;
      import java.net.*;

      public class VkApiCall {
          public static void main(String[] args) throws IOException {
              URL url = new URL("https://api.vk.com/method/groups.getById");
              HttpURLConnection con = (HttpURLConnection) url.openConnection();
              con.setRequestMethod("POST");
              con.setDoInput(true);
              con.setDoOutput(true);
              byte[] out = "group_ids=1".getBytes("UTF-8");
              con.setFixedLengthStreamingMode(out.length);
              con.connect();
              try (OutputStream os = con.getOutputStream()) {
                  os.write(out);
              }
              InputStream inputStream = con.getInputStream();
              byte[] bytes = inputStream.readAllBytes();
              System.out.println(new String(bytes, "UTF-8"));
          }
      }
      ---------- END SOURCE ----------

      FREQUENCY : always


            psonal Pallavi Sonal (Inactive)
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: