Android HttpClient - 证书中的主机名与 不匹配!= <*.example.com>;
我在 Android 上使用 HttpClient 连接到 https://someUrl.com/somePath。问题是该网站的证书适用于 *.someUrl.com,而不是 someUrl.com,因此我收到 SSLException。是的,该网站的部分很蹩脚,但除非我能修复它,否则我就陷入困境。有没有办法让 HttpClient 放松并接受证书?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是我的(编辑过的)解决方案:
它的优点是不更改默认行为,除非存在通配符域,在这种情况下,它会重新验证,就好像两部分域(例如,someUrl.com)是证书的一部分一样,否则将重新抛出原始异常。这意味着真正无效的证书仍然会失败。
This is my (edited) solution:
It has the advantage of not changing the default behavior unless there is a wildcard domain, and in that case it revalidates as though the 2 part domain (e.g., someUrl.com) were part of the certificate, otherwise the original exception is rethrown. That means truly invalid certs will still fail.
Android 上的 BouncyCastle 太旧,无法识别通配符证书。
您可以编写自己的 X509TrustManager 来检查通配符。
或者,如果您可以接受风险,则可以完全禁用证书检查。请参阅此问题,
Android 上的自签名 SSL 接受
The BouncyCastle on Android is too old and it doesn't recognize wildcard certificate.
You can write your own X509TrustManager to check for wildcard.
or you can disable certificate check altogether if you can accept the risk. See this question,
Self-signed SSL acceptance on Android
如果它想要
*.someUrl.com
,那么您似乎可以直接给它www.someUrl.com/somePath
而不是someUrl.com/somePath< /代码>。
If it wants
*.someUrl.com
, then it seems like you could just give itwww.someUrl.com/somePath
instead ofsomeUrl.com/somePath
.如果您使用 WebView 只需调用
忽略 SSL 错误
if you use a WebView just call
to ignore SSL errors