gpt4 book ai didi

android - 服务器证书使用 SAN(主题备用名称)时的 SSLException

转载 作者:行者123 更新时间:2023-11-29 02:16:20 25 4
gpt4 key购买 nike

我正在尝试使用 org.apache.http.* 中的类建立 https 连接。作为设置的一部分,我正在使用 BrowserCompatHostnameVerifier() 类,它声明:

The hostname must match either the first CN, or any of the subject-alts. A wildcard can occur in the CN, and in any of the subject-alts.

当我访问主机名与 CN 中指定的主机名不匹配但与 subject-alts 中的条目之一匹配的服务器时,我得到以下异常:

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);
}

将此行为与将 url 替换为“https://www.google.com”时的行为进行比较。我可以通过创建自己的 X509HostnameVerifier 来解决这个问题,但我想知道这是否是 BrowserCompatHostnameVerifier 中的一个有效错误,或者我是否做错了什么。

还有其他人遇到类似的问题吗?

最佳答案

根据trunk AbstractVerifier.java ,它没有获取您的 subjectAltName(它列出了它在异常中找到的所有名称)。 openssl s_client -connect mtvniph1-f.akamaihd.net:443 -showcerts 表明这不是证书的问题。

关于android - 服务器证书使用 SAN(主题备用名称)时的 SSLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3507536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com