作家
登录

HTTPS 原理浅析及其在 Android 中的使用

作者: 来源: 2017-05-24 11:02:22 阅读 我要评论

  •     httpsURLConnection.setHostnameVerifier(MY_DOMAIN_VERIFY); 
  • }else { 
  •     httpsURLConnection.setSSLSocketFactory((SSLSocketFactory) SSLSocketFactory.getDefault()); 
  •     httpsURLConnection.setHostnameVerifier(DO_NOT_VERIFY); 
  • 5.代码实现

    本部分重要基于第四部分提出的Android应用中应用HTTPS碰到的一些常见的问题,给出一个比较体系的解决筹划。

    (6) 普适性(根本上所有的客户端和办事器都支撑这些协定);

    (1) 整体构造

    不管是应用自签名证书,照样采取客户端身份验证,核心都是创建一个本身的KeyStore,然后应用这个KeyStore创建一个自定义的SSLContext。整体类图如下:

    【编辑推荐】

    1. Android 自定义 BaseAdapter 最佳实践
    2. 一觉悟来Kotlin成了Android的新宠儿【附代码】
    3. 关于Android模块化我有一些话不知当讲欠妥讲
    4. Android开辟者自述:为什愦我要改用Kotlin?
    5. 用Kotlin优雅地开辟Android应用
    【义务编辑:武晓燕 TEL:(010)68476606】

    应用数据协定携带着应用消息,只以TLS的角度推敲的话,这些就是数据缓冲区。记录层应用当前连接安然参数对这些消息进行打包、碎片整顿和加密。如下图所示,可以看到传输的数据已经是经由加密之后的了。

    类图中的MySSLContext可以应用在HTTPUrlConnection的方法与办事端连接的过程中:

    核心是经由过程httpsURLConnection.setSSLSocketFactory应用自定义的校验逻辑。整体设计上应用策略模式决定采取哪种验证机制:

    • makeContextWithCilentAndServer 单向验证方法(自定义信赖的证书集合)
    • makeContextWithServer 双向验证方法(自定义信赖的证书集合,并应用客户端证书)
    • makeContextToTrustAll (信赖所有的CA证书,不安然,仅供测试阶段应用)

    1.ClientHello

    (2) 单向验证并自定义信赖的证书集合

    在App中,把办事端证书放到资本文件下(平日是asset目次下,因为证书对于每一个用户来说都是雷同的,并且也不会经常产生改变),然则也可以放在设备的外部存储上。

    1. public class SSLContextWithServer implements GetSSLSocket { 
    2.  
    3.     // 在这里进行办事器正式的名称的设备 
    4.     private String[] serverCertificateNames = {"serverCertificateNames1" ,"serverCertificateNames2"}; 
    5.  
    6.     @Override 
    7.     public SSLContext getSSLSocket() { 
    8.         String[] caCertString = new String[serverCertificateNames.length]; 
    9.         for(int i = 0 ; i < serverCertificateNames.length ; i++) { 
    10.             try { 
    11.                 caCertString[i] = readCaCert(serverCertificateNames[i]); 
    12.             } catch(Exception e) { 
    13.  
    14.             } 
    15.         } 
    16.         SSLContext mSSLContext = null
    17.         try { 
    18.             mSSLContext = SSLContextFactory.getInstance().makeContextWithServer(caCertString); 
    19.         } catch(Exception e) { 
    20.  
    21.         } 
    22.         

        推荐阅读

        国务院力促政务信息系统整合 政务云爆发在即

      涉及体系范围之广泛尚属初次:本次整合共享涵盖了大年夜中心到处所的各个部分,纳入整合共享范畴的┞服务信息体系包含由当局投资扶植、当局与社会企业结合扶植、当局向社会购大班事或须要当局资金运行保护的,用于支>>>详细阅读


      本文标题:HTTPS 原理浅析及其在 Android 中的使用

      地址:http://www.17bianji.com/lsqh/35390.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)