问题
测试反馈Android 4.4(API19)访问服务器报错:
javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x787a3d40: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:744 0x73332d74:0x00000000)
解决方案
很多博客说到,API 16+是支持TLSv1.2的,但其实不完全正确,需要注意服务器配置的加密套件是否在Android对应版本的支持列表中。
- 使用okhttp开启的方式:support enabling TLSv1.2 on Android 4.1-4.4
- 同时需要注意服务器是否配置了Android 4.4支持的加密套件(ciphers-suites),否则请求时候也会握手失败,关于加密套件的支持api列表,参考官方文档:cipher-suites;服务器配置的SSL/TLS支持以及加密套件,可以通过
nmap
工具查询,命令参考。