开发新闻App调用newsapi.org遇Trust anchor证书路径验证异常求助
关于Android新闻App出现CertificateException的原因分析
这个问题我之前帮不少开发者排查过类似案例,核心和设备的SSL证书信任机制有关,结合你说的「部分设备正常、部分报错」的情况,主要原因有这几个:
系统版本差异导致根证书缺失
这是最常见的原因。比如Android 7.0(API 24)之前的系统,预装的信任根证书列表里可能没有newsapi.org所使用的SSL证书对应的根CA证书。很多新的CA机构根证书是在后续系统版本中才被加入官方信任列表的,旧系统没包含的话,就会出现「信任锚找不到」的验证失败。设备系统被自定义修改
如果出问题的设备刷了第三方ROM,或者用户手动修改过系统的信任证书列表(比如删除了某些根证书),也会导致无法正常验证newsapi.org的证书链。这类自定义系统往往会修改默认的信任体系,和原生系统的证书列表不一致。网络环境的SSL拦截干扰
要是出问题的设备连接的是有SSL拦截的网络(比如企业内部代理、某些安全软件的流量监控),这类网络会替换掉原网站的SSL证书,而设备并没有信任这个被替换的证书,就会触发证书验证异常。你可以试试让用户切换到手机流量或者无拦截的WiFi环境测试,就能排除这个可能性。证书链不完整(概率较低)
虽然你大部分设备正常,但也有可能newsapi.org的服务器返回的证书链缺少中间证书。部分设备因为系统自带了对应的中间证书能自动补全链,而另一部分设备没有的话就会验证失败。不过这种情况相对少见,毕竟大部分设备正常的话,更倾向于前面几种原因。
内容的提问来源于stack exchange,提问作者rafaelmd
相关产品推荐
相关产品推荐

