1

I have migrated from one server to a new server. I using a PHP webservice for my mobile application to access the data from the database. I have installed the SSL certificate and the webservice works fine on the browser and for the iphone app (using ASIHTTPRequest lib). But the android app does not load the data for the same service. So debugged and this is the error full I am getting.

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 sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1868)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1337)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:998)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1294)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1321)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1305)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1087)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at com.turnkey.maths.Test.main(Test.java:60)
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 sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1319)
    ... 12 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
    ... 18 more

this is the method I use to collect the data

try 
{
    HttpURLConnection connection;
    OutputStreamWriter request = null;
    URL url = null;   
    String parameters = "query=SELECT * from table;";
    url = new URL("https://www.domain.com/weservice/index.php?");
    connection = (HttpURLConnection) url.openConnection();
    connection.setDoOutput(true);
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    connection.setRequestMethod("POST");    
    request = new OutputStreamWriter(connection.getOutputStream());
    request.write(parameters);
    request.flush();
    request.close();            
    String line = "";               
    InputStreamReader isr = new InputStreamReader(connection.getInputStream());
    BufferedReader reader = new BufferedReader(isr);
    StringBuilder sb = new StringBuilder();
    while ((line = reader.readLine()) != null)
    {
        sb.append(line + "\n");
    }
    String response = sb.toString();
    isr.close();
    reader.close();
    System.out.println(response);
} catch (Exception e) {
    e.printStackTrace();
}

The webservice link without https fine. I have followed the instruction from this answer but this did not help. Any idea what is wrong with the web service or the java keystore? Thanks

Community
  • 1
  • 1
AL̲̳I
  • 2,441
  • 4
  • 29
  • 50

1 Answers1

1

I had this similar issue few months ago. The ssl certificate for the domain was not installed correctly. Basically the server admin installed the certificate for domain.com and I was using the link https://www.domain.com/index.php which was causing problem. When I checked without www it worked so I asked my server admin to reinstall the SSL certificate for www.domain.com and after that I was able to access the data on a secure link. I hope it helps Cheers

Ana
  • 584
  • 2
  • 6
  • 16
  • ok let me try that... The thing is my website https://www.domain.com works in chrome, IE, Safari but Firefox is giving me the certificate warning which does not make sense :/ – AL̲̳I Feb 20 '15 at 10:10
  • wow it worked... I reinstalled the SSL certificate and suddenly the warning goes away and my mobile apps are working fine... Thanks :) – AL̲̳I Feb 23 '15 at 11:48