Android – OkHttp 访问 https 的怪问题
💡
原文中文,约8700字,阅读约需21分钟。
📝
内容提要
最近使用OkHttp访问https请求时遇到了一些问题,经过实践发现是由于https证书协议不匹配导致的。在装备OkHttp时,需要注意服务端支持的ssl协议,并相应地配置SSLSocketFactory和HostnameVerifier。在Android设备上可能会出现一些问题,如协议错误和类型转换异常,需要根据具体情况进行处理。建议使用TLSv1.2作为最低支持标准,并根据服务端证书进行配置。
🎯
关键要点
- 使用OkHttp访问https请求时,可能会遇到https证书协议不匹配的问题。
- 服务端的https证书主要分为SSL和TLS两种协议,TLS是SSL的升级版。
- OkHttp支持的https证书协议包括SSLv3、TLSv1、TLSv1.1、TLSv1.2和TLSv1.3,但从2014年起已不再支持SSLv3。
- 建议使用TLSv1.2作为最低支持标准,并根据服务端证书进行配置。
- 在特殊情况下,可能需要手动配置SSLSocketFactory和HostnameVerifier。
- 常见问题包括SSL握手失败和类型转换异常,需根据具体情况进行排查。
- Android设备对TLS协议的支持情况不同,需确认设备是否支持所用的TLS版本。
- 在Android 4.x设备上,TLSv1.2默认未启用,需强制启用以解决问题。
- 自定义SSLSocketFactory和SSLSocket可以解决某些兼容性问题。
- 文章提供了相关代码示例和GitHub链接供参考。
➡️