前言
在Android项目开发过程中,我们目前常用到的网络框架基本都是基于Okhttp,Https协议在APP的开发中也被应用的越来越多,Okhttp默认是
支持https请求的,但是支持的Https网站必须是CA机构认证了的,对于自签名的网址,还是不能访问的,访问直接抛出如下异常信息:
onFailure: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
对于https协议的处理,目前两种方式
- 客户端默认信任全部证书
- 对自签名网址进行证书的单独处理
客户端默认信任全部证书
这个方式实现起来简单,但是因为信任了全部证书,会有一定的风险!使用者需注意,下面了解一下具体的实现
- 创建信任管理器的基本接口X509TrustManager
//获取TrustManager
private static TrustManager[] getTrustManager() {
//不校检证书链
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
//不校检客户端证书
}
@Override
public void