OkHttp使用Https访问服务器时信任所有证书
2016-10-19 09:41
537 查看
http://blog.csdn.net/u013686019/article/details/52856389
OkHttp通过Https方式访问服务器时需要验证一些证书,如果证书有问题,网络访问失败,Log信息:
为了避免在本地安装一连串证书的麻烦(尤其对于测试环境),我们可以设置OkHttp,让它信任所有证书。
之前在网上进行了大量搜索,好不容易找到正确的设置方式,特此记录下。
1、实现X509TrustManager接口:
2、实现HostnameVerifier接口:
3、OkHttp进行post实例:
有时间研究下Https、证书相关。
OkHttp通过Https方式访问服务器时需要验证一些证书,如果证书有问题,网络访问失败,Log信息:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
为了避免在本地安装一连串证书的麻烦(尤其对于测试环境),我们可以设置OkHttp,让它信任所有证书。
之前在网上进行了大量搜索,好不容易找到正确的设置方式,特此记录下。
1、实现X509TrustManager接口:
private static class TrustAllCerts implements X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {} @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {} @Override public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];} }
2、实现HostnameVerifier接口:
private static class TrustAllHostnameVerifier implements HostnameVerifier { @Override public boolean verify(String hostname, SSLSession session) { return true; } }
private static SSLSocketFactory createSSLSocketFactory() { SSLSocketFactory ssfFactory = null; try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, new TrustManager[] { new TrustAllCerts() }, new SecureRandom()); ssfFactory = sc.getSocketFactory(); } catch (Exception e) { } return ssfFactory; }
3、OkHttp进行post实例:
public static void post(String url, String json, Callback callback) throws IOException { try { OkHttpClient.Builder mBuilder = new OkHttpClient.Builder(); mBuilder.sslSocketFactory(createSSLSocketFactory()); mBuilder.hostnameVerifier(new TrustAllHostnameVerifier()); OkHttpClient client = mBuilder.build(); RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); client.newCall(request).enqueue(callback); } catch(Exception e) { e.printStackTrace(); } }
有时间研究下Https、证书相关。
相关文章推荐
- okHttp访问Https-----信任当前证书和所有证书
- 搭建Apache服务器并使用自签证书实现https访问
- 微信支付证书问题C#使用Https访问加载SSL证书本地调试正常服务器IIS内部错误解决方法
- HttpsURLConnection访问HTTPS链接时信任所有证书
- 使用HttpClient4.3.1模拟Http请求与无信任证书访问Https
- OKHttp HTTPS 请求支持所有Https服务器 证书验证忽略客户端证书,(3)
- 使用java访问https链接时,不信任证书导致PKIX path building failed
- Okhttp3 配置Https访问(使用PKCS12)证书
- iPhone HTTPS 访问非信任站点(使用非信任证书,untrusted certificate)
- 使用SVN管理VC项目(解决无法访问https://code.google.com/hosting/settings)(服务器为Code Google)(转http://blog.csdn.net/xiadasong007/archive/2010/07/
- Android 访问不受信任的HTTPS,无需证书
- Android平台实现https信任所有证书的方法
- Android平台实现https信任所有证书的方法
- Android平台实现https信任所有证书的方法
- Android平台实现https信任所有证书的方法
- 使用Keytool为JDK添加https证书信任
- Android网络编程——https 不验证证书方式(信任所有证书)
- Android网络编程——https 不验证证书方式(信任所有证书)
- Android网络编程——https 不验证证书方式(信任所有证书)