• https域名强弱校验的区别


    HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){  
        public boolean verify(String hostname,SSLSession ssls) {  
                return true;  
            }  
    });  
    

    以上是域名若校验,如果当前https已经添加了本地证书实现了证书校验,那么域名可以作为一个弱校验也是没有问题的。

    但是如果证书不想在app中保留,给https设置了信任所有证书,那么就需要设置域名的强校验来保证https访问目标的准确性,可以本地预埋域名,然后解析跟目标服务器连接缓存SSLSession中的peerhost和cn字段的域名,能够保证目标的准确性。  

      ssls是从服务器拿到的ssl证书相关(具体待验证)   

      hostname是访问的url的域名

      https默认验证不通过时,可以自己重写这个方法,如果返回true,表示强制信任此证书,就是通常的弱信任。如果需要自己做操作,可以从ssls里面拿到服务器返回的证书数据,同自己请求的域名、证书签证的域名、证书接收的url的域名做对比,匹配规则需要自己确认。这个域名也有可能是ip,具体看情况而定

    以下是域名的强校验

    request.setHostnameVerifier(new HostnameVerifier() {
    			@Override
    			public boolean verify(String hostname, SSLSession session) {
    				// TODO Auto-generated method stub
    				try {
    					String peerHost = session.getPeerHost(); //服务器返回的主机名
    					String str_new = "";
    					X509Certificate[] peerCertificates = (X509Certificate[]) session
    							.getPeerCertificates();
    					for (X509Certificate certificate : peerCertificates) {
    						X500Principal subjectX500Principal = certificate
    								.getSubjectX500Principal();
    						String name = subjectX500Principal.getName();
    						String[] split = name.split(",");
    						for (String str : split) {
    							if (str.startsWith("CN")) {//证书绑定的域名或者ip
    								if (peerHost.equals(hostname)&&str.contains("客户端预埋的证书cn字段域名")) {
    									return true;
    								}
    							}
    						}
    					}
    				} catch (SSLPeerUnverifiedException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    				return false;
    			}
    		});
    

      

  • 相关阅读:
    设计模式-解释器模式
    安卓运行环境(四)
    安卓创建应用窗口(三)
    微型 ORM 的第二篇 DapperLambda性能测试[Dapper比较篇]
    微型 ORM 的第一篇 DapperLambda发布
    visual studio 2013 使用IIS Express附加调试MVC5
    数据库常用查询语句写法(优化)
    Windows Server 2008通过计划任务定时执行bat文件
    第一章 Memcached安装
    第四章 LINQ to SQL基本用法
  • 原文地址:https://www.cnblogs.com/fengchuxiaodai/p/5962760.html
Copyright © 2020-2023  润新知