iOS允许无效的证书,而android没有

在我们的一个应用程序部署过程中出现exception情况。 iOS版本运行良好,但Android版本的应用程序没有工作。 经过一些故障排除,我们发现应用程序打电话给API。 Apinetworking服务器缺less证书链。 我们尝试了与Safari浏览器的iOS8 iPhone上的API调用,它在Android上没有任何警告,它提供了证书警告。 我明白这个问题,但想知道为什么它在iOS上工作? iOS在操作系统级别有没有SSLvalidation的错误?

您看到的行为是由于某些浏览器和用户代理(包括iOS上的Safari)实现的称为AIA追逐的function。 证书可以具有“ 权限信息访问”扩展的值,如果它们不是由服务器提供的,则可以通过获取中间体来构build完整的证书链,浏览器或基础框架可以使用该扩展 。

Android不会做AIA追逐,这就是为什么你从Android应用程序调用API时看到错误的原因。 我一直无法找出为什么这不是内置于Android。

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