今天在部署Glassfish(payara)服务器时遇到个问题:在api服务里我调用了别人家的SDK(说出来也无妨,其实就是小米家的MiPush),他们的SDK里调用自家的api接口,他们的接口是https方式的,然后问题来了,每次发送Push数据都会抛错,看了下日志,就是标题这样的。有的读者看到这里可能就明白我为什么用错误日志来做标题,因为方便你们搜索到啊。
好了,说下解决思路。(show me the code)
- 先看下日志你是访问哪个接口(网址)抛错的。(笔者这里是https://api.xmpush.xiaomi.com/)
- 下载该域名的https证书:(大神可用OpenSSL工具一键获取证书,无视下面的步骤)
- 使用浏览器访问这个网址(笔者这里用的世界之窗,Chrome旧版本也可以,新版本没有查看证书信息这功能了)
-
点击地址栏的绿色https图标
证书信息.png
导出证书向导.png
选择base64.png
证书保存位置.png
完成-保存证书.png
- 获取到了该域名的证书了,下一步就是导入证书到你的项目下的cacerts中
首先记得要把你部署的服务停掉。注意下面的命令的路径要根据你的实际情况要更改
- 查看当前domain的证书
keytool -list -keystore "D:\JavaApplicationServer\payara41\glassfish\domains\domain_express_inquiry\config\cacerts.jks"
![keytool查看证书.png](https://img.haomeiwen.com/i1428538/e92332de4443f489.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
> 提示输入密码,如果你没改过的话,默认密码是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](https://img.haomeiwen.com/i1428538/99732462d34a52a0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![keytool再次查看证书.png](https://img.haomeiwen.com/i1428538/48f752ce1a960f01.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4. 现在重启你的服务看看,是不是能正常发数据了。
----------
![关注我的公众号.jpg](https://img.haomeiwen.com/i1428538/27b8b23065ed36aa.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
网友评论