栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android HttpClient-证书中的主机名不匹配 !=

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android HttpClient-证书中的主机名不匹配  !=

这是我的(编辑)解决方案:

class MyVerifier extends AbstractVerifier {    private final X509HostnameVerifier delegate;    public MyVerifier(final X509HostnameVerifier delegate) {        this.delegate = delegate;    }    @Override    public void verify(String host, String[] cns, String[] subjectAlts)     throws SSLException {        boolean ok = false;        try { delegate.verify(host, cns, subjectAlts);        } catch (SSLException e) { for (String cn : cns) {     if (cn.startsWith("*.")) {         try {    delegate.verify(host, new String[] {cn.substring(2) }, subjectAlts);    ok = true;         } catch (Exception e1) { }     } } if(!ok) throw e;        }    }}public DefaultHttpClient getTolerantClient() {    DefaultHttpClient client = new DefaultHttpClient();    SSLSocketFactory sslSocketFactory = (SSLSocketFactory) client .getConnectionManager().getSchemeRegistry().getScheme("https") .getSocketFactory();    final X509HostnameVerifier delegate = sslSocketFactory.getHostnameVerifier();    if(!(delegate instanceof MyVerifier)) {        sslSocketFactory.setHostnameVerifier(new MyVerifier(delegate));    }    return client;}

除非存在通配符域,否则它的优点是不更改默认行为,并且在这种情况下,它将重新验证好像两部分域(例如someUrl.com)是证书的一部分,否则将重新引发原始异常。这意味着真正无效的证书仍然会失败。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号