gpt4 book ai didi

android - HttpClient获取新域名后产生SSLException

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:04 26 4
gpt4 key购买 nike

最近我获得了一个新域名,用于现有的 Android 应用程序。我还从受信任的 CA (Comodo) 购买了 SSL 证书。当我使用 Web 浏览器浏览到新域时,一切都按预期工作 - 没有关于 SSL 证书的错误。与 HttpUrlConnection 相同,但由于某些原因 Apaches HttpClient 生成 SSLException:

javax.net.ssl.SSLException: hostname in certificate didn't match: my.new.domain != my.old.domain OR my.old.domain

更有趣的是,我尝试使用的一些设备在更改后可以正常工作大约一周,然后就停止工作了。其他设备立即停止工作。

如果我在客户端代码中使用旧域名,一切正常。

我使用的是版本 4.3.3 from here Android 的 HttpClient。我意识到转换为 HttpUrlConnection 确实可以解决我的问题,但我对为什么会发生这种情况感兴趣 - HttpClient 从哪里获取旧域名?是服务器配置错误,还是 Apaches HttpClient 有某种内部 dns 缓存?使用新的模拟器实例进行测试会引发相同的异常,因此问题与缓存无关。

我自己的调查陷入困境 - 我所能找到的只是完全禁用主机名验证的说明,或自签名证书的说明。

最佳答案

这可能是因为 Apache HttpClient 不支持 SNI(服务器名称指示),您可以在同一个 IP 地址后面拥有多个证书。这意味着,它不会在 SSL 握手中发送目标主机名,因此服务器只有目标 IP 地址来决定它应该使用哪个证书,并且只使用 IP 的默认证书——这可能是错误的。

关于android - HttpClient获取新域名后产生SSLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24886771/

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