背景
从后端请求第三方的提供的https接口,一直提示握手失败javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure,但api放到浏览器直接访问是没问题的,这也证明了人家提供的api可用性。
我发起请求的客户端是jdk8版本,我试着请求其他平台https接口,能获取到数据,又证明了我代码是没问题了。那问题出在哪?
分析
我在本地的IDEA打开SSL的debug调试,在jvm启动加入
-Djavax.net.debug=all
发起一个请求,携带版本号,加密套件列表,发起第一次握手
按正常流程,服务器端应该给我回礼Hello,但在日志中却看到握手失败的提示
这说明服务器那边验证没通过,直接拒绝了本次握手,我们打开分析工具亚数信息-SSL/TLS安全评估报告,分析下请求的域名