解决unable to find valid certification path to requested target
昨天访问供应商提供的接口还是正常的,今天早上上班却被告知系统功能总是提示错误,完全用不了,查询系统日志以及本地重新测试发现,调用供应商提供的接口提示
unable to find valid certification path to requested target
javax.net.ssl.SSLHandshakeException: General OpenSslEngine problem
The connection observed an error
这些错误,搞了一个早上,不停地上网查资料,有的说要更新JDK版本,有的说要将服务端证书添加到Java证书信任库中,还有人说一些别的,我现在都想不起来他们说的是什么,总之是一些没用的。
我更新高版本JDK后,发现调用接口正常了,但是系统是很多年前开发的,不方便更新版本,后来觉得服务端证书添加到Java证书信任库有点道理,于是往这个方向着手,果然不出所料,经过一个早上的努力,终于把问题解决了
添加证书
keytool -import -alias cacerts -keystore C:\blobcer\cacerts -file C:\blobcer\xxx.crt
删除证书
keytool -delete -alias "alias-name" -keystore "C:\blobcer\cacerts"
首先要将供应商提供的接口地址在浏览器里打开,获取它的证书,然后再加到自己的JDK证书信任列表中,由于我的JDK路径有空格,我就将JDK证书信任列表复制到没空格的地方,加工好再放回原位,原来的位置是JAVA_HOME/jre/lib/security/cacerts。
备注:java证书默认密码是changeit
证书导出方法如下图: