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

Android HttpClient-证书中的主机名不匹配!=,第1张

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)是证书的一部分,否则将重新引发原始异常。这意味着真正无效的证书仍然会失败。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5560823.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存