1.问题:
由于后台第三方服务器进行了变更,所以服务地址进行了切换,但是切换地址后我本地(JDK1.8)是可以连通的,但是上测试服务器(JDK1.7)发送报文后,第三方运维人员说没有收到请求,并且返回的错误为:Received fatal alert: protocol_version
2.问题检索:
根据网上搜索资料发现可能是传输过程中支持的网络协议不一致导致第三方服务器拒绝访问,与第三方运维人员沟通后发现第三方新的服务平台最低支持TLSv1.2,这个是JDK1.8请求远程服务默认打开的协议,但是JDK1.7默认打开的是TLSv1,初步问题标定为是JDK版本一期的问题。问题解决后做了进一步整理不同JDK版本支持的TLS协议如下:
3.解决方案:
由于网上提供的方案有好多中,但是对我来说比较可行的方案:
方案一:升级服务器JDK版本,由于平台 已经上线好几年,功能比较多,升级版本影响比较大,为了安全起见,所有功能都需要测试人员重新测试,所以否决了这种方案;
方案二:如果是本地环境,可以使用编辑器对开发环境的参数进行设置,该方案对我来说不太贴切,所以否决了该方案,如果想了解,可以自行度娘;
方案三:重点方案
既然JDK1.7默认的打开的是TLSv1协议,我们能不能修改JDK默认协议呢,后来查询资料有人说还真可以,直接上代码:
添加这部分代码后,重新打包上测试可以了,希望可以给遇到相似问题的同学提供帮助。