javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin...

今天在部署Glassfish(payara)服务器时遇到个问题:在api服务里我调用了别人家的SDK(说出来也无妨,其实就是小米家的MiPush),他们的SDK里调用自家的api接口,他们的接口是https方式的,然后问题来了,每次发送Push数据都会抛错,看了下日志,就是标题这样的。有的读者看到这里可能就明白我为什么用错误日志来做标题,因为方便你们搜索到啊。

好了,说下解决思路。(show me the code)

  1. 先看下日志你是访问哪个接口(网址)抛错的。(笔者这里是https://api.xmpush.xiaomi.com/)
  2. 下载该域名的https证书:(大神可用OpenSSL工具一键获取证书,无视下面的步骤)
  • 使用浏览器访问这个网址(笔者这里用的世界之窗,Chrome旧版本也可以,新版本没有查看证书信息这功能了)
  • 点击地址栏的绿色https图标


    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第1张图片
    证书信息.png

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第2张图片
    导出证书向导.png

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第3张图片
    选择base64.png

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第4张图片
    证书保存位置.png

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第5张图片
    完成-保存证书.png
  1. 获取到了该域名的证书了,下一步就是导入证书到你的项目下的cacerts中

首先记得要把你部署的服务停掉。注意下面的命令的路径要根据你的实际情况要更改

  • 查看当前domain的证书
    keytool -list -keystore "D:\JavaApplicationServer\payara41\glassfish\domains\domain_express_inquiry\config\cacerts.jks"
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第6张图片
    keytool查看证书.png

提示输入密码,如果你没改过的话,默认密码是changeit

  • 导入上面保存的新证书
keytool -import -noprompt -trustcacerts -alias "xmpush" -file "C:\Users\Administrator\Desktop\api.xmpush.xiaomi.com.cer" -keystore "D:\JavaApplicationServer\payara41\glassfish\domains\domain_express_inquiry\config\cacerts.jks" -storepass changeit
keytool添加证书.png

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin..._第7张图片
keytool再次查看证书.png
  1. 现在重启你的服务看看,是不是能正常发数据了。

你可能感兴趣的:(javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin...)