开始碰到这个问题找遍了各种方法,其实还是需要耐心的先搞清楚原因再想方法靠谱,这里也总结下这个异常的多种解决方案,
首先先理解下为什么出现handshake?字面理解是客户端与服务端握手失败,能导致握手失败的原因是什么?
一.协议版本不同
首先是两边版本协议不一致,例如客户端可能是jdk7 /jdk8 它们支持的协议参考这里https://emacsist.github.io/2017/03/02/https.protocols%E5%9C%A8java%E4%B8%AD%E7%9A%84%E4%BD%BF%E7%94%A8/
可以在运行时加上 -Djavax.net.debug=all 参数 能够看到服务器与客户端之间的协议,如下图:
main, WRITE: TLSv1.2 Handshake, length = 88
[Raw write]: length = 93
0000: 16 03 03 00 58 01 00 00 54 03 03 5D E7 98 04 87 ....X...T..]....
0010: BF 47 63 0F 9E C1 B6 BA BF 39 05 78 28 00 54 87 .Gc......9.x(.T.
0020: 55 F5 71 B2 7B DF 8B E7 55 0A E4 00 00 02 00 35 U.q.....U......5
0030: 01 00 00 29 00 0D 00 1C 00 1A 06 03 06 01 05 03 ...)............
0040: 05 01 04 03 04 01 04 02 03 03 03 0