https证书链校验失败

作者 : 开心源码 本文共2384个字,预计阅读时间需要6分钟 发布时间: 2022-05-11 共73人阅读

https证书链校验失败

https证书链校验失败

https url in browser

好容易线上运行稳固了连个月了。

今天上午忽然说 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证书链校验失败

发表回复