AsyncHttpClient实现https,并且实现SSL双向验证
来源:互联网 发布:迪士尼乐园全套源码 编辑:程序博客网 时间:2024/06/10 17:44
最近由于项目要从http转向https,所以今天折腾了一天搞掂
项目网络请求框架:AsyncHttpClient
具体实现可参考该作者文章:http://www.jianshu.com/p/e9d655281f82 感谢该作者大大
1:先要生成p12文件,在cmd进入到你证书的文件夹;
通过git实现命令openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
【如果你的git没有openSSL,那就自己搞一个吧,具体问度娘】
其中,橙色文件名称就是服务器给你的证书名称
2:生成信任的服务器端证书,即.bks或者.truststore文件
java环境通过keystore 生成
具体可参考文章:http://blog.csdn.net/zlele0326/article/details/52054897 感谢该作者大大的记录
p12和bks文件生成后就是代码上添加SKK
private static final String KEY_STORE_TYPE_BKS = "bks";//固定值private static final String KEY_STORE_TYPE_P12 = "PKCS12";//固定值private static final String KEY_STORE_PASSWORD = "123123";//此密码是你生成证书时输入的密码private static final String KEY_STORE_TRUST_PASSWORD = "123123";private static KeyStore keyStore;private static KeyStore trustStore;private static SSLSocketFactory getSocketFactory() {SSLSocketFactory socketFactory=null;try {// 服务器端需要验证的客户端证书keyStore = KeyStore.getInstance(KEY_STORE_TYPE_P12);// 客户端信任的服务器端证书trustStore = KeyStore.getInstance(KEY_STORE_TYPE_BKS);//res/raw/文件夹下的.p12文件 InputStream ksIn = Tapplication.tapp.getResources().openRawResource(R.raw.client);//res/raw/文件夹下的.bks文件 InputStream tsIn = Tapplication.tapp.getResources().openRawResource(R.raw.server);try {keyStore.load(ksIn, KEY_STORE_PASSWORD.toCharArray());trustStore.load(tsIn, KEY_STORE_TRUST_PASSWORD.toCharArray());} catch (Exception e) {e.printStackTrace();} finally {try {ksIn.close();} catch (Exception ignore) {}try {tsIn.close();} catch (Exception ignore) {}}socketFactory = new SSLSocketFactory(keyStore, KEY_STORE_PASSWORD, trustStore);socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);} catch (KeyManagementException e) {e.printStackTrace();} catch (UnrecoverableKeyException e) {e.printStackTrace();} catch (KeyStoreException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return socketFactory;}
AsyncHttpClient devClient = new AsyncHttpClient();devClient.setSSLSocketFactory(getSocketFactory());
这时候你打包的时候你会发现你的as无法正常安装apk,原因是前面你使用keystore生成证书的时候修改了jdk,所以你把你加上去的东西都还原,你的as就可以正常安装apk了
至此,你的AsyncHttpClient就可以支持https外加SSL验证了 0 0
- AsyncHttpClient实现https,并且实现SSL双向验证
- https实现双向验证请求
- Android HTTPS SSL双向验证
- Android HTTPS SSL双向验证
- Android HTTPS SSL双向验证
- eclipse中使用Jetty插件实现https请求与SSL双向验证
- eclipse中使用Jetty插件实现https请求与SSL双向验证
- Android平台实现SSL单双向验证
- Debain8 Tomcat8 JDK8 实现SSL双向验证
- ios AFNetworking https 双向证书验证实现
- 关于Okhttp3 https双向验证实现代码
- rails+apache2+passenger+ssl实现https双向认证通信
- Android webview在https下实现ssl的双向认证
- 自签SSL证书实现Nginx配置https双向认证
- Android webview在https下实现ssl的双向认证
- Node.Js TLS(SSL) HTTPS双向验证
- android https(SSL) 双向验证详解
- [转载]Android HTTPS SSL双向验证
- 每天一个linux命令(9):touch 命令
- 学生管理系统的几个设计模式
- java知识总结(五)抽象和接口
- jquery刷新页面的实现代码(局部及全页面刷新)
- Ubuntu eclipse 快捷方式
- AsyncHttpClient实现https,并且实现SSL双向验证
- 关系型和非关系型数据库的区别?
- Linux设备驱动一 (2)poll
- 【学习笔记】缓冲区溢出
- 决策树回归R语言实现
- Java集合---LinkedList源码解析
- Http的Cache机制
- jdbc连接数据库Sql Server2012
- [ZJOI2002] 青蛙的约会