这两天在微信小程序调用api接口时,模拟器都是正常的,手机访问进去就一片空白,也没有报错,排查了许多问题才发现是证书链的问题,本文作填坑记录。
在出问题的时候首先排查了ssl证书是否部署成功、备案、业务域名配置等原因,甚至开始怀疑是不是服务器问题(因为用的是香港服务器),页面也不给出任何报错,实在是头疼,最后根据小程序官方的答疑了解到可能是证书链问题。
原文部分内容如下:
小程序必须使用 HTTPS/WSS 发起网络请求。请求时系统会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。
对证书要求如下:
- HTTPS 证书必须有效;
- 证书必须被系统信任,即根证书已被系统内置
- 部署 SSL 证书的网站域名必须与证书颁发的域名一致
- 证书必须在有效期内
- 证书的信任链必需完整(需要服务器配置)
除了网络请求 API 外,小程序中其他 HTTPS
请求如果出现异常,也请按上述流程进行检查。如 https 的图片无法加载、音视频无法播放等。
————————————————————————
解决方案
通过 https://myssl.com/ssl.html 查询证书链是否完整
如果不完整,通过 https://myssl.com/chain_download.html 进行证书链修复,将修复完整的证书信息再重新部署到服务器上。
再次检查证书为正常状态,如下图所示,小程序就可以正常访问服务端了。