title: HtmlUnit - PKIX path building failed: unable to find valid certification path to requested target
body: <p>I have a JAVA EE webapp on Glassfish using a GoDaddy SSL certificate. The HTTP listener redirects to the HTTPS one.</p>
  
  <p>I'm trying to get <code>HtmlUnit</code> to fetch a page from the webapp for Googlebot crawler. The code works as intended on the staging server which doesn't have SSL enabled. However, on the live server with the GoDaddy SSL certificate, I get the below error when <code>HtmlUnit</code> tries to get the webpage.</p>
  
  <p>I've tried the workaround specified here (<a href="http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/" rel="noreferrer">http://www.mkyong.com/webservices/jax-ws/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target/</a>), but that didn't help. Any ideas as why I get this error ?</p>
  
  <pre><code>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:1917)
  at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:301)
  at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:295)
  at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1471)
  at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:212)
  at sun.security.ssl.Handshaker.processLoop(Handshaker.java:936)
  at sun.security.ssl.Handshaker.process_record(Handshaker.java:871)
  at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
  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 org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:275)
  at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:254)
  at com.gargoylesoftware.htmlunit.HtmlUnitSSLConnectionSocketFactory.connectSocket(HtmlUnitSSLConnectionSocketFactory.java:155)
  at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:117)
  at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:314)
  at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:363)
  at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:219)
  at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
  at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
  at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
  at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
  at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
  at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:178)
  at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1313)
  at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1230)
  at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:338)
  at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:407)
  at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:392)
  </code></pre>