https 证书验证 okhttp https设置
来源:互联网 发布:ios6旧版软件 编辑:程序博客网 时间:2024/05/22 04:36
自制https证书
需要验证.
okhttp不验证直接通过通过所有的https连接
代码如下
public void getONetWorkString() { OkHttpClient build = new OkHttpClient.Builder() .sslSocketFactory(createSSLSocketFactory()) .hostnameVerifier(new TrustAllHostnameVerifier()) .build(); String url = "https://www.12306.cn/mormhweb/";//带https的网址 final Request request = new Request.Builder().url(url).build(); Call call = build.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.i("joker", e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { String res = response.body().string(); Log.e("joker",res); } }); } 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];} } 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; }
app带证书验证
public void getNetWorkString() { String url = "https://www.12306.cn/mormhweb/";//带https的网址 final Request request = new Request.Builder().url(url).build(); Call call = setCard().newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_LONG).show(); } }); Log.i("joker", e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { final String res = response.body().string(); Log.e("joker",res); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,res,Toast.LENGTH_LONG).show(); } }); } }); }
public OkHttpClient setCard() { OkHttpClient.Builder builder = new OkHttpClient.Builder(); try { CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(null); String certificateAlias = Integer.toString(0); keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(getAssets().open("daodianwang.cer")));//拷贝好的证书 SSLContext sslContext = SSLContext.getInstance("TLS"); final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); sslContext.init ( null, trustManagerFactory.getTrustManagers(), new SecureRandom() ); builder.sslSocketFactory(sslContext.getSocketFactory()); builder.hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String s, SSLSession sslSession) { return true; } }); } catch (Exception e) { e.printStackTrace(); } return builder.build(); }okhttp用的是最新版本3.5的
用证书这里有个深坑.
用360浏览器导出的证书可以生效
然而用UC浏览器导出的证书居然不可以生效.简直不忍直视.坑爆了.代码是可行的.
asyncHttpClient 用https的配置
不验证简单到不能再简单了
AsyncHttpClient client = new AsyncHttpClient(true,80,443);或者
AsyncHttpClient client = new AsyncHttpClient();client.setSSLSocketFactory(MySSLSocketFactory.getFixedSocketFactory());
0 0
- https 证书验证 okhttp https设置
- OKHttp HTTPS 请求证书验证 PEM证书
- okhttp使用https忽略证书验证
- okhttp使用https忽略证书验证
- okhttp和webview跳过https证书验证
- okHttp 使用HTTPS证书
- OKHttp HTTPS 请求支持所有Https服务器 证书验证忽略客户端证书,(3)
- 使用okhttp设置https
- Android下OkHttp请求自定义HTTPS证书接口设置
- Https验证证书
- Https 证书验证问题
- https之证书验证
- java Android OKHttp HTTPS 请求证书验证 PEM证书(1)
- Okhttp的https的设置
- Okhttp连接https添加自产证书
- okhttp关于https的证书信任问题
- 使用okhttp忽略https的证书认证
- okhttp网络框架的https协议之忽略证书验证的登录实例
- If-Modified-Since & If-None-Match
- 8000 sentences of Oral English(one)
- Java 设计模式
- Delphi多线程 尽量避免使用API创建线程
- 05-获取已连接wifi路由器密码
- https 证书验证 okhttp https设置
- UISwipeGestureRecognizer
- android 桌面 未读角标
- CSDN-markdown编辑器 语法学习 笔记
- 06-浅谈MITM攻击之信息窃取
- 微信小程序画布详解
- Mac下IDEA 报错Unable to ping server at localhost:1099
- 开发运维实用linux命令
- aaaa