javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
查了一上午,这个错误的原因好像是 发送端和接收端采用的 TLS 协议版本不一致导致的:
解决步骤
- 确认双方使用的 TLS 协议版本
- 更改一方的 TLS 使两方相同
1.确认双方使用的 TLS 协议版本
捣鼓了半天,终于发现一个简单靠谱的方法来确认双方的 TLS 版本
感谢这篇博客:类似 java -Djavax.net.debug=SSL,handshake,data,trustmanager MyApp 如何在Eclipse下运行-CSDN博客
1. 点击 【run】旁边的下拉小箭头
2. 打开 【Run Configures】> 【Arguments】
3. 在 【VM Arguments】 最后追加 -Djavax.net.debug=ssl:handshake , 保存
4. 重启 server
5. 在 Console 里查看自己启用的协议版本
接收端的版本是 TLSv1.2的, 所以我需要调整我的为 TLSv1.2的
2. 更改己方协议为 TLSv1.2 版本
更改方法: 在上面提到的 【VM Arguments】里追加下面的 配置
-Dhttps.protocols=TLSv1.2
重启 server
起效了, 对方的接口调起来了(之前调不起来,报标题的错误)