Unsupported record version Unknown-0.0 问题解决

前几天要用https调用一个地址,jdk使用的是1.8,协议是tlsv1.2,但是一直调用的时候返回Unsupported record version Unknown-0.0,百思不得其解,网上的资料也很少。

Unsupported record version Unknown-0.0 问题解决_第1张图片

有一天奇怪的是,在别人的电脑是可以的!于是怀疑起本机internet选项的tlsv1.2、注册表等等,但还是不行。

后来无意中发现,低版本的jdk1.8,会有握手时不会发送SNI的bug,于是升级了高一点版本的jdk,结果就解决了!

原来是jdk1.8.0_101,升到了jdk1.8.0_202。

问题原因:在建立https连接时,一般都会设置 主机名验证 这个属性

conn.setHostnameVerifier();

在低版本的jdk1.8中,设置了该属性会诱发上述的握手不发送SNI的bug,导致无法正常连接。

如果无法更换jdk版本的话,也可以把该属性注释掉试试。

java论坛上也有关于这问题的讨论:

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8144566

你可能感兴趣的:(java,https,jdk1.8)