一尘不染

如何解决javax.net.ssl.SSLHandshakeException错误?

java

我连接了VPN,以设置广告资源API来获取产品列表,并且效果很好。一旦我从Web服务获得结果并绑定到UI。当我遇到付款错误时,我也将PayPal与我的make Express结帐应用程序集成在一起。我将servlet用于后端过程。谁能说出解决此问题的方法?

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

阅读 3105

收藏
2020-03-05

共1个答案

一尘不染

首先,你需要从尝试连接的服务器获取公共证书。这可以通过多种方式完成,例如联系服务器管理员并提出要求,使用OpenSSL下载它,或者,由于这似乎是HTTP服务器,因此可以通过任何浏览器连接到该服务器,并查看页面的安全信息。 ,并保存证书的副本。(Google应该能够准确告诉你如何使用特定的浏览器。)

现在你已将证书保存在文件中,你需要将其添加到JVM的信任库中。在$JAVA_HOME/jre/lib/security/JRE$JAVA_HOME/lib/securityJDKcacertsJava中,有一个名为的文件,该文件包含著名的证书颁发机构的公共证书。要导入新证书,请以具有写cacerts权限的用户身份运行keytool:

keytool -import -file <the cert file> -alias <some meaningful name> -keystore <path to cacerts file>

它很可能会要求你输入密码。Java随附的默认密码是changeit。几乎没有人更改它。在完成了这些相对简单的步骤之后,你将安全地进行通信,并确保与正确的服务器且仅与正确的服务器通信(只要它们不会丢失私钥)。

2020-03-05