异常SSLException当服务器证书使用SAN(使用者备用名称)

我试图建立使用类org.apache.http HTTPS连接。*。 由于我设置的一部分,我使用的是BrowserCompatHostnameVerifier()类的规定:

主机名必须匹配或者第一CN,或任何学科低价竞标。 通配符可以发生在CN,并且在任何的标的低价竞标的。

当我打了谁的服务器的主机名不匹配,这是在CN指定,但不匹配的标的低价竞标的项目之一,我得到以下异常:

javax.net.ssl.SSLException: hostname in certificate didn't match: <mtvniph1-f.akamaihd.net> != <a248.e.akamai.net> at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:222) at org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:54) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:151) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:132) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:321)

下面是相关的代码块是造成此错误:

DefaultHttpClient seed = new DefaultHttpClient(); SchemeRegistry registry = new SchemeRegistry(); SSLSocketFactory ssf = SSLSocketFactory.getSocketFactory(); // XXX: This verifier isn't working with Subject Alternative Names ssf.setHostnameVerifier(new BrowserCompatHostnameVerifier()); registry.register(new Scheme("https", ssf, 443)); SingleClientConnManager mgr = new SingleClientConnManager(seed.getParams(), registry); DefaultHttpClient http = new DefaultHttpClient(mgr, seed.getParams()); // Config point, change to your preference String url = "https://mtvniph1-f.akamaihd.net/e3_ubisoft_prod0.m3u8"; HttpGet method = new HttpGet(url); HttpResponse response = null; try { response = http.execute(method); } catch (Exception e) { Log.e(TAG, "Request failed", e); }

当你用“https://www.google.com”替换URL进行比较这一行为和。 我可以解决此通过创建自己的X509HostnameVerifier,但我想知道这是否是在BrowserCompatHostnameVerifier一个有效的错误,或者如果我做错了什么。

任何人有类似的问题?

--------------解决方案-------------

据干线AbstractVerifier.java,它不是拿起你的SubjectAltName(它列出了所有的名字找到了例外openssl s_client -connect mtvniph1-f.akamaihd.net:443 -showcerts表明,它不是用一个问题证书。

分类:机器人 时间:2015-03-15 人气:3
本文关键词: SSL,机器人
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.357 (s). 10 q(s)