Retrofit+OKHttp忽略https证书验证
2018-02-02 15:44
1136 查看
原文地址:https://www.cnblogs.com/huolongluo/p/8360478.html
记录这个的原因,是因为很多时候,因为后台配置的证书不正确导致APP访问不到服务器数据,导致影响自身的开发进度。没几行代码,逻辑也清晰,所以下面就直接贴出工具类吧:
package huolongluo.yeshen.byw.injection.model;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* Created by 火龙裸先生 on 2018/1/26.
* <p>
* 忽略https证书验证
*/
public class SSLSocketClient
{
//获取这个SSLSocketFactory
public static SSLSocketFactory getSSLSocketFactory()
{
try
{
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, getTrustManager(), new SecureRandom());
return sslContext.getSocketFactory();
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
//获取TrustManager
private static TrustManager[] getTrustManager()
{
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager()
{
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
{
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
{
}
@Override
public X509Certificate[] getAcceptedIssuers()
{
return new X509Certificate[]{};
}
}};
return trustAllCerts;
}
//获取HostnameVerifier
public static HostnameVerifier getHostnameVerifier()
{
HostnameVerifier hostnameVerifier = new HostnameVerifier()
{
@Override
public boolean verify(String s, SSLSession sslSession)
{
return true;
}
};
return hostnameVerifier;
}
}
有了以上的工具类,通过OKHttpClient.Builder对象调用 “sslSocketFactory ”方法 和 “hostnameVerifier ” 方法。类似于如下:
简言之:
记录这个的原因,是因为很多时候,因为后台配置的证书不正确导致APP访问不到服务器数据,导致影响自身的开发进度。没几行代码,逻辑也清晰,所以下面就直接贴出工具类吧:
package huolongluo.yeshen.byw.injection.model;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* Created by 火龙裸先生 on 2018/1/26.
* <p>
* 忽略https证书验证
*/
public class SSLSocketClient
{
//获取这个SSLSocketFactory
public static SSLSocketFactory getSSLSocketFactory()
{
try
{
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, getTrustManager(), new SecureRandom());
return sslContext.getSocketFactory();
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
//获取TrustManager
private static TrustManager[] getTrustManager()
{
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager()
{
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
{
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
{
}
@Override
public X509Certificate[] getAcceptedIssuers()
{
return new X509Certificate[]{};
}
}};
return trustAllCerts;
}
//获取HostnameVerifier
public static HostnameVerifier getHostnameVerifier()
{
HostnameVerifier hostnameVerifier = new HostnameVerifier()
{
@Override
public boolean verify(String s, SSLSession sslSession)
{
return true;
}
};
return hostnameVerifier;
}
}
有了以上的工具类,通过OKHttpClient.Builder对象调用 “sslSocketFactory ”方法 和 “hostnameVerifier ” 方法。类似于如下:
简言之:
1 builder.sslSocketFactory(SSLSocketClient.getSSLSocketFactory()); 2 builder.hostnameVerifier(SSLSocketClient.getHostnameVerifier());
相关文章推荐
- okhttp使用https忽略证书验证
- okhttp网络框架的https协议之忽略证书验证的登录实例
- okhttp使用https忽略证书验证
- OKHttp HTTPS 请求支持所有Https服务器 证书验证忽略客户端证书,(3)
- android Retrofit+OkHttp使用自制的证书实现https安全传输
- okhttp3.0忽略https证书
- https 证书验证 okhttp https设置
- https 证书验证 okhttp https设置
- android Retrofit+OkHttp使用自制的证书实现https安全传输
- OKHttp请求https证书验证
- CloseableHttpAsyncClient忽略https的证书验证
- iOS https请求 忽略证书验证
- OKHttp的常用配置如配置Https证书,忽略Https证书,Cookie持久化
- okhttp/Retrofit-rxJava加入数字证书支持HTTPS 实现单向及双向验证
- java Android OKHttp HTTPS 请求证书验证 PEM证书(1)
- Android okhttp3.0忽略https证书的方法
- Https请求忽略证书验证最新实现
- Retrofit访问https接口设置忽略安全验证方法
- 使用自定义证书并忽略验证的HTTPS连接Post请求方式的封装
- Retrofit忽略Https安全验证