基于OkHttp访问网络时出现的网站证书认证问题
2018-01-26 21:22
381 查看
最近在跟后台交互的时候发现,后台基于安全考虑使用了https的通信。但是当安卓端使用OkHttp框架像平时一般请求访
问网络时则会出现如下错误:
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
查阅了很多资料后我才发现,这是网站证书的认证存在安全问题。在看了很多代码之后,我将其汇总在一个HttpUtils工具类中,以方便使用。
具体解决方法如下:
问网络时则会出现如下错误:
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
查阅了很多资料后我才发现,这是网站证书的认证存在安全问题。在看了很多代码之后,我将其汇总在一个HttpUtils工具类中,以方便使用。
具体解决方法如下:
public static OkHttpClient getUnsafeOkHttpClient() throws NoSuchAlgorithmException, KeyManagementException { try { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } } ; final SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new SecureRandom()); final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.sslSocketFactory(sslSocketFactory); builder.hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String s, SSLSession sslSession) { return true; } }); 8fab return builder.build(); } catch (Exception e) { throw new RuntimeException(e); } }这个方法返回了一个OkHttpClient对象,并且为其实现了对所有网站证书安全性的认证,以此对象去访问网络便可以解决上述错误。
相关文章推荐
- IE内核浏览器访问https网站出现证书问题
- IE7访问HTTPS网站提示证书有安全问题的解决方案
- 息壤网络出现问题,大批网站受灾
- 基于QWebView开发的浏览器通过需要证书认证网站的方法
- 证书服务安装出现拒绝访问,找不到网络路径
- 关于安卓高版本访问网络出现.NetworkOnMainThreadException异常的问题
- 远程访问jupyter notebook--->出现网络无法连接的问题
- android网络连接经常出现Timeout,NetworkOnMainThreadException问题,手动浏览器访问web地址正常
- 此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示。
- ASP.NET MVC 学习 --- 第八课(使用机器名访问网站出现html5标签不识别问题)
- 20090802解决网站网络问题--出现大量TIME_WAIT 的问题
- Centos6.3下Apache配置基于加密的认证https加密证书访问
- 访问网络服务器时出现的奇怪问题
- 关于网站域名访问出现welcome to nginx 的问题
- 关于火车票12306网站出现“此网站的安全证书存在问题”解决办法
- 访问网络服务器时出现的奇怪问题
- 关于“解决实现注册用户后,自动具备访问网站的权限的问题”文章中配置出现找不到角色的问题的解决办法
- 关于网站编码显示问题 效果是 访问 带有中文注释的sass文件出现编码报错。
- HTTPS访问站点,出现证书问题解决