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图标


    证书信息.png

    导出证书向导.png

    选择base64.png

    证书保存位置.png

    完成-保存证书.png
  1. 获取到了该域名的证书了,下一步就是导入证书到你的项目下的cacerts中

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

  • 查看当前domain的证书
    keytool -list -keystore "D:\JavaApplicationServer\payara41\glassfish\domains\domain_express_inquiry\config\cacerts.jks"
    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

keytool再次查看证书.png
  1. 现在重启你的服务看看,是不是能正常发数据了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 服务器https配置 配置https操作说明文档 1、查看服务器环境配置(tomcat和apache合并使用) 2...
    南京杨小兵阅读 8,901评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,813评论 25 708
  • 感性让你激发良知;理性让你懂得规矩。 感性显现出心慈的一面;理性暴露出无私的一角。 感性之...
    烽火煤阅读 170评论 0 1
  • 女儿4岁半了,我突然醒悟,她到了一个分水岭! 我奇怪她最近的变化,有点突然,比如,画画突然有了主题,而且同样的画能...
    我若盛开清风自来阅读 244评论 2 2