Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HtmlUnit-PKIX路径生成失败:找不到请求目标的有效证书路径_Java_Jakarta Ee_Ssl_Htmlunit - Fatal编程技术网

Java HtmlUnit-PKIX路径生成失败:找不到请求目标的有效证书路径

Java HtmlUnit-PKIX路径生成失败:找不到请求目标的有效证书路径,java,jakarta-ee,ssl,htmlunit,Java,Jakarta Ee,Ssl,Htmlunit,我有一个使用GoDaddy SSL证书的Glassfish上的JavaEE Web应用程序。HTTP侦听器重定向到HTTPS侦听器 我正在尝试获取HtmlUnit以从Googlebot crawler的webapp获取页面。该代码在未启用SSL的临时服务器上按预期工作。但是,在具有GoDaddy SSL证书的live服务器上,当HtmlUnit尝试获取网页时,我会遇到以下错误 我已经尝试了此处指定的解决方法(),但没有帮助。你知道我为什么会犯这个错误吗 javax.net.ssl.SSLHand

我有一个使用GoDaddy SSL证书的Glassfish上的JavaEE Web应用程序。HTTP侦听器重定向到HTTPS侦听器

我正在尝试获取
HtmlUnit
以从Googlebot crawler的webapp获取页面。该代码在未启用SSL的临时服务器上按预期工作。但是,在具有GoDaddy SSL证书的live服务器上,当
HtmlUnit
尝试获取网页时,我会遇到以下错误

我已经尝试了此处指定的解决方法(),但没有帮助。你知道我为什么会犯这个错误吗

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)

一种解决方法是只在请求的页面上禁用SSL。当然不是同样的事情,但是这些废话太烦人了。要禁用SSL,请在
webClient
对象上使用以下命令:

 webClient.getOptions().setUseInsecureSSL(true);