Android应用开发之android https解析
凌雪 2018-10-24 来源 :网络 阅读 1077 评论 0

摘要:本文将带你了解Android应用开发之android https解析,希望本文对大家学Android有所帮助。

本文将带你了解Android应用开发之android https解析,希望本文对大家学Android有所帮助。


HTTPS简介
HTTPS 全称 HTTP over TLS。TLS是在传输层上层的协议,应用层的下层,作为一个安全层而存在,翻译过来一般叫做传输层安全协议。
对 HTTP 而言,安全传输层是透明不可见的,应用层仅仅当做使用普通的 Socket 一样使用 SSLSocket 。
TLS是基于 X.509 认证,他假定所有的数字证书都是由一个层次化的数字证书认证机构发出,即 CA。另外值得一提的是 TLS 是独立于   HTTP 的,任何应用层的协议都可以基于   TLS 建立安全的传输通道,如 SSH 协议。
HTTPS工作流程
Client Server
1.Request. 公钥(锁头)
2.Client校验证书(过期时间、颁发机构)
3.生成随机数,将随机数发送给服务端
4.C/S通过随机值当KEY加密数据传输
CA要解决的问题
通过公钥使用系统提供的验证策略
CertificateFactory certificateFactory =   CertificateFactory.getInstance("X.509");InputStream caInput = new   BufferedInputStream(CC.getApplication().getAssets().open("aosCaGsorganizationvalsha2g2r1.crt"));Certificate   ca=certificateFactory.generateCertificate(caInput);Logger.v("fasfasf",   "ca=" + ((X509Certificate)   ca).getSubjectDN());Logger.v("fasfasf", "key=" +   ((X509Certificate) ca).getPublicKey());  KeyStore keyStore =   KeyStore.getInstance(KeyStore.getDefaultType());keyStore.load(null);keyStore.setCertificateEntry("ca",ca); TrustManagerFactory   tmf   =TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());tmf.init(keyStore);
SSLContext sslContext =   SSLContext.getInstance("TLS");sslContext.init(null,tmf.getTrustManagers(),   new SecureRandom());<em>sslSocketFactory </em>=   sslContext.getSocketFactory();
if (<em>sslSocketFactory </em>!=   null)   {            HttpsURLConnection.setDefaultSSLSocketFactory(<em>sslSocketFactory</em>);            //            HttpsURLConnection.setDefaultHostnameVerifier(new   HostnameVerifier()   {                @Override                public   boolean verify(String hostname, SSLSession session)   {                    boolean   isTrustDns=   ConfigerHelper.getInstance().isTrustDns(hostname);                    Logger.v(<em>TAG</em>,   "isTrustDns   "+isTrustDns);                    return   isTrustDns;                }});//              httpsURLConnection.setHostnameVerifier(new HostnameVerifier()   {//                  @Override//                  public boolean verify(String hostname, SSLSession session)   {//                      boolean isTrustDns=   ConfigerHelper.getInstance().isTrustDns(hostname);//                      Logger.v(TAG, "isTrustDns   "+isTrustDns);//                      return   isTrustDns;//                  }//              });        }
自定义验证策略
if (<em>sAgroupSslSocketFactory   </em>== null)   {            try   {                TrustManager[]   trustManagers=new   TrustManager[]{                        new   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];                            }                        }                };                SSLContext   sslContext =   SSLContext.getInstance("TLS");                sslContext.init(null,trustManagers,   new SecureRandom());                <em>sslSocketFactory   </em>=   sslContext.getSocketFactory();            }   catch (Throwable e)   {                Logger.v("fasfasf",""+e.getMessage());//                  DebugLog.error(e.getMessage(),   e);            }        }    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved