https证书链校验失败
https证书链校验失败
好容易线上运行稳固了连个月了。
今天上午忽然说 https 证书快到期了,已经申请了新的证书,必需要今天更换。
中午OP直接在线上更换了,而后,Android APP接口全线挂掉,iOS却没问题……
原来Android上,在APP内置了证书进行校验,现在更换了服务器证书,导致Android校验失败;果然是做的越多, 越容易出事。
除了native接口挂掉(native请求的是 api.we.com 域名),webview请求的 m.we.com 页面也挂掉了,显示白屏,然而问了Android开发同学,并没有对 webview 的 https 证书校验进行解决。
复现问题
在PC浏览器里访问某个手机端页面(m.we.com),chrome和Safari正常显示,未提醒异常;Firefox 提醒证书错误SEC_ERROR_UNKNOWN_ISSUER,具体信息如下:
因为发布者未知,所以证书不可信。 服务器可可以未发送合适的中间证书。 或者许需要额外的根证书。
在本地Android 6模拟器里,直接使用webview加载上述的URL,复现了APP里的问题,白屏,并且有如下报错信息:
Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
看来 m.we.com 的证书的确有问题!
定位问题
通过Google上述的错误关键字,找到了这两篇文章,很有帮助: ;
按照 stackoverflow 里说的,通过 openssl 进行诊断,在命令行执行如下:
openssl s_client -debug -connect m.we.com:443
显示异常信息:
—
Certificate chain
0 s:/businessCategory=Private Organization/serialNumber=911101080573384678/1.3.6.1.4.1.311.60.2.1.3=CN/1.3.6.1.4.1.311.60.2.1.2=Beijing/C=CN/ST=\\xE5\\x8C\\x97\\xE4\\xBA\\xAC/L=\\xE5\\x8C\\x97\\xE4\\xBA\\xAC/OU=\\xE8\\xBF\\x90\\xE7\\xBB\\xB4\\xE9\\x83\\xA8/O=\\xE5\\x8C\\x97\\xE4\\xBA\\xAC\\xE5\\xBE\\xAE\\xE8\\xB4\\xA2\\xE7\\xA7\\x91\\xE6\\x8A\\x80\\xE6\\x9C\\x89\\xE9\\x99\\x90\\xE5\\x85\\xAC\\xE5\\x8F\\xB8/CN=m.we.com
i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Extended Validation CA – SHA256 – G3
—
应该是 https证书链 有问题,并没有一直指向某个 根证书
修复问题
和OP同学确认了,的确https证书有问题,重新更换了证书之后,再次执行:
openssl s_client -debug -connect m.we.com:443
这次输出的 https证书链 信息如下:
—
Certificate chain
0 s:/businessCategory=Private Organization/serialNumber=911101080573384678/1.3.6.1.4.1.311.60.2.1.3=CN/1.3.6.1.4.1.311.60.2.1.2=Beijing/C=CN/ST=\\xE5\\x8C\\x97\\xE4\\xBA\\xAC/L=\\xE5\\x8C\\x97\\xE4\\xBA\\xAC/OU=\\xE8\\xBF\\x90\\xE7\\xBB\\xB4\\xE9\\x83\\xA8/O=\\xE5\\x8C\\x97\\xE4\\xBA\\xAC\\xE5\\xBE\\xAE\\xE8\\xB4\\xA2\\xE7\\xA7\\x91\\xE6\\x8A\\x80\\xE6\\x9C\\x89\\xE9\\x99\\x90\\xE5\\x85\\xAC\\xE5\\x8F\\xB8/CN=api.we.com
i:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Extended Validation CA – SHA256 – G3
1 s:/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Extended Validation CA – SHA256 – G3
i:/OU=GlobalSign Root CA – R3/O=GlobalSign/CN=GlobalSign
—
能看出,这次证书链最终指向到了 GlobalSign 这个根CA。
刷新Android webview,页面正常显示,OK了。
相关链接
https://support.mozilla.org/zh-CN/kb/%E9%94%99%E8%AF%AF%E7%A0%81sec_error_unknown_issuer%E7%9A%84%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4?as=u&utm_source=inproduct
https://juejin.im/entry/5681e5cd00b01b9f2bd6d9e8
https://stackoverflow.com/a/16302527/2583885
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » https证书链校验失败