微信小程序部分安卓机型访问https失败问题

时间:2019-03-19 15:28:21

最近遇到一个html5和微信小程序的问题,“延时光影”小程序后端迁移服务器后,部分安卓机型在使用“延时光影”小程序时出现无法播放视频的问题。在PC端、微信web开发者工具IDE、IOS苹果手机和绝大部分安卓手机则完全正常。通过朋友的截图反馈,发现是完全没有请求到任何数据,而并非只是无法加载视频。更坑爹的是,还是个薛定谔的BUG。


微信小程序部分安卓机型访问https失败问题


为了节省https的带宽,延时光影小程序所有的视频内容,默认是走http协议的。开始以为只是视频源是http的问题,但随后发现,即使改成了https,小程序和对应的html5页面在安卓机型下还是薛定谔猫般的无法加载数据。再次判断感觉可能是部分安卓机型系统比较老,不支持高版本TLS协议,于是关闭tls1.3,只保留了tls1.2,但BUG问题依旧。最后只好给朋友一个开发权限,让他打开微信vConsole后截图,找到红色的错误提示"request:fail ssl hand shake error"意思是ssl握手错误。


微信小程序部分安卓机型访问https失败问题


百度了一下错误提示,大部分说是小程序tls版本必须大于1.2,原因是苹果强制所有 app 满足 HTTPS,即 iOS9 推出的 App Transport Security (ATS) 特性。但这个BUG只出现在部分安卓系统下,而且在之前,已经更改过tls版本了,显然不是BUG核心所在。但既然错误提示已经很明显了,于是找到一个SSL证书在线检测工具,才发现原来是缺少中间证书的问题。


微信小程序部分安卓机型访问https失败问题

跨服务商跨系统的迁移后端服务器时,打包证书文件遗漏了中间证书,导致证书链不完整,在部分安卓系统下证书不可信从而导致无法请求到数据。为什么就安卓系统会出现这个问题?在证书文件的详细信息-授权信息访问一栏的Alternative Name中指定了中间证书的获取URL地址。IOS、MAC、Windows、都支持这种方式获取中间证书,唯独部分Android系统不支持,所以就无法建立可信连接。

微信小程序部分安卓机型访问https失败问题


解决方法,就是迁移服务器时一定要注意证书文件pem/crt以及私钥文件key的完整性。中间证书一定要加在根证书后面。如下图的阿里云CDN-HTTPS安全加速,一定要把根证书文件和中间证书文件都复制到内容里。

微信小程序部分安卓机型访问https失败问题


另外,选择ssl服务商时,尽量选择可靠的服务商,更换或续费重签证书时,也尽量检查是否更换过中间证书。以防导致线上产品出现只在部分情况下才会复现的BUG问题。


本站所有文章均为天行博客原创,转载请注明来源及出处!

作者:宇天行 (关于我

本文首发地址:http://www.huceo.com/post/490.html

或许您还会喜欢这些文章:

Tags: 作者:宇天行 | 分类:开发技术 | 评论:7 | 浏览:8637