我试图使用HtmlUnit登录到一个使用HTTPS连接的网站,并得到由该语句引起的错误。
page = webClient.getPage(url);例外是
error: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`我到目前为止所做的事:
ConnectException: Connection timed out我没有尝试使用WebClientOptions文档中概述的任何其他方法,因为我不知道如何使用它们来获得我想要的效果。
我在网上看到的最常见的答案之一是使用webClient.setUseInsecureSSL(true);的建议
这可以很好地测试我的应用程序,但是我需要使用SSL来保护连接,因为我使用用户名和密码的敏感性来连接到网站。
我想补充的一件有趣的事情是,每5-10次尝试中就有一次能够运行,并且不会抛出SSLHandshakeException,尽管我在代码中没有做任何更改。
我该如何解决这个问题?另外,为什么它每隔一段时间就会起作用呢?
发布于 2017-02-23 23:37:29
好吧,所以我想出了办法,只要尝试不同的事情。事实证明,我需要以.der形式而不是.crt格式导入证书。默认的keystore已经拥有正确的根证书,但缺少的是中间证书和叶证书的某种组合。在导入intermediate.der和leaf.der并指定我的仙人掌文件副本在哪里之后,SSLHandshakeException就没有再次发生了。希望这实际上已经解决了,而且这个例外已经永远消失了。
https://stackoverflow.com/questions/42404654
复制相似问题