Android下OkHttp请求自定义HTTPS证书接口设置
2016-04-15 16:34
781 查看
在请求安全性高的接口时,我们可能会使用到HTTPS接口,HTTPS可以理解为HTTP+TLS,关于HTTPS具体是怎么工作的,可以看这篇文章:http://gold.xitu.io/entry/56ef4ff47db2a20052218e0f
如果你的证书是向Android中内置默认信任的证书颁发机构申请的,则不需要通过此步骤(需要好多钱,但是大部分国内应用不会花那么多钱去买权威机构颁发的证书),如果不是,此步骤是在你的App网络请求中加入信任自定义的证书(第三方非权威证书颁发机构颁发的证书),让你的App信任此第三方非权威证书颁发机构。
如果你的证书是向Android中内置默认信任的证书颁发机构申请的,则不需要通过此步骤(需要好多钱,但是大部分国内应用不会花那么多钱去买权威机构颁发的证书),如果不是,此步骤是在你的App网络请求中加入信任自定义的证书(第三方非权威证书颁发机构颁发的证书),让你的App信任此第三方非权威证书颁发机构。
try { //取得SSL的SSLContext实例,使用TLS协议 SSLContext sslContext = SSLContext.getInstance("TLS"); //取得KeyManagerFactory和TrustManagerFactory的X509密钥管理器实例 KeyManagerFactory keyManager = KeyManagerFactory.getInstance("X509"); TrustManagerFactory trustManager = TrustManagerFactory.getInstance("X509"); //取得BKS密库实例 KeyStore kks = KeyStore.getInstance("PKCS12"); //Android支持BKS的KeyStore KeyStore tks = KeyStore.getInstance("BKS"); //加客户端载证书和私钥,通过读取资源文件的方式读取密钥和信任证书 //raw中为truststore.bks的信任密库 tks.load(appCtx .getResources() .openRawResource(R.raw.truststore), CLIENT_TRUST_PASSWORD.toCharArray()); //raw资源中的文件为client.p12格式的证书 kks.load(appCtx .getResources() .openRawResource(R.raw.client), CLIENT_KET_PASSWORD.toCharArray()); //初始化密钥管理器 keyManager.init(kks, CLIENT_KET_PASSWORD.toCharArray()); trustManager.init(tks); //初始化SSLContext sslContext.init(keyManager.getKeyManagers(), trustManager.getTrustManagers(), null); mOkHttpClient = OkHttpUtils.getInstance().getOkHttpClient(); mOkHttpClient.setSslSocketFactory(sslContext.getSocketFactory()); } catch (Exception e) { Log.e(TAG, "init https proxy failed!"); throw new RuntimeException("init https proxy failed!"); }
相关文章推荐
- 计算机网络系统的五层体系结构
- 为你的android App实现自签名的ssl证书(https)
- 性能调优之网络篇 - iperf
- ThreadingTCPServer相关源码和RequestHandler相关源码
- 获取网页图片链接(http:/)
- the road to TCPIP(1)--TCPIP详解--数据链路层
- stm32f103zet6+enc28j60上移植lwip,建立TCP客户端通信
- Winsock协议配置问题导致网络连接出问题
- VC6.0 OCX模拟http/post上传文本文件
- Httplib模块使用
- Android OkHttp完全解析 是时候来了解OkHttp了
- OKHttp客户端异步操作时的两个回调方法
- virsual studio等AP无法访问网络映射驱动器(map network drive)的解决办法(二)
- C# Socket网络编程TCP/IP层次模型、端口及报文等探讨
- 神经网络中交叉熵代价函数 求导
- phpmyadmin "Cannot log in to the MySQL server" PMA版本4.4.15.5 httpd2.4
- Mac OS X取消Apache(httpd)开机启动(转)
- (11)chrome postman 发送http请求 实用工具
- 【原创】记一次HttpWebRequest中国移动查账单爬虫的攻克历程
- 应用层慢速DDoS攻击压力测试工具-SlowHTTPTest