iOS 允许无效证书,而 android 不允许

Posted

技术标签:

【中文标题】iOS 允许无效证书,而 android 不允许【英文标题】:iOS allowed invalid certificate while android did not 【发布时间】:2016-01-18 07:11:21 【问题描述】:

在我们的一个应用部署过程中遇到了不寻常的情况。 ios 版本运行良好,但应用程序的 android 版本无法运行。经过一些故障排除后,我们发现该应用程序调用了api。 Api Web 服务器缺少证书链。我们在带有 safari 的 iOS8 iphone 上尝试了 api 调用,它在 android 上运行时没有任何警告,它给出了证书警告。我理解这个问题,但想知道为什么它在 iOS 上有效? iOS 在 OS 层面的 SSL 验证是否存在 bug?

【问题讨论】:

【参考方案1】:

您看到的行为是由于某些浏览器和用户代理(包括 iOS 上的 Safari)实现的称为 AIA 追逐的功能。证书可以具有 Authority Information Access extension 的值,浏览器或底层框架可以使用该值通过获取中间体(如果服务器未提供中间体)来构建完整的证书链。

Android 不执行 AIA 追踪,这就是您在从 Android 应用调用 API 时看到错误的原因。我一直无法找出为什么它没有内置在 Android 中。

解决此问题的正确方法是确保 Web 服务器为连接的客户端提供必要的中间证书。

【讨论】:

以上是关于iOS 允许无效证书,而 android 不允许的主要内容,如果未能解决你的问题,请参考以下文章

允许使用 AFNetworking 的无效证书

iOS百度推送上传pem证书提示‘证书无效’

无效签名,自签名证书?

不允许向该商家付款(客户 ID 无效)

iOS 多人共享开发证书

如何允许用户在 iOS 中使用 AFNetworking 信任和固定自签名 SSL 证书