javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAl...

问题发现到解决过程:

1.医院现场反映,调用消息平台的短信接口都发不出来。

2.排查日志,发现中转程序调用短信提供商接口报错,程序报错信息如下:

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAl..._第1张图片

3.分析:没见过这个错误,之前发送都是可以的,现在不行,有一个ssl,难道是https证书什么的改了?立刻在必应搜索这条错误问题。

4.首先查看:https://stackoverflow.com给的410个赞的解答:

This bizarre message means that the truststore you specified was:

empty,

not found, or

couldn't be opened (due to access permissions for example).

5.看不太懂。继续搜索,找到了一个中文的解答:https://blog.csdn.net/qq_33382113/article/details/78643373

6.立刻去看了一下jdk,通过自启动脚本里面设置的JAVA_HOME变量,发现之前使用的openjdk的目录不存在,换成了官方的jdk,应该是被其他人卸载掉,重装了。

7.立刻反应给对接人员,询问是否有人动过服务器,修改了JDK。

8.一边着手解决这个问题,修改了环境变量,重启了中转程序,观察短信接口的调用。发现错误消失,程序调用短信接口,短信提供商接口调用返回预期结果。

9.解决完毕。

分析:

1.根据csdn博客的解决方案,说是ssl支持的相关证书包不存在。猜测是程序按照之前的路径去找ssl调用的证书包,找不到,因此报这个错误。

反思和收获:

1.如果多人在使用服务器跑java程序,不要轻易的去改动java环境,实在需要修改,一定要通知相关人员。尤其是在生产环境上!!!

你可能感兴趣的:(javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAl...)