起因
微信小程序请求的域名必须要SSL证书。前些日子,免费的证书过期了,于是便在腾讯云申请了1年证书,使用的是一键部署。
部署完成后,确实可以通过https访问了。但是在微信小程序中无法访问域名的接口(微信开发者工具中正常、但真机预览和调试,接口无法访问)。
经过
开始以为是小程序代码问题(几年前的项目),排查无果。后来网上有人说是缺少证书链,于是按这个思路排查。
最终通过SSL检测网站(https://www.myssl.cn/tools/check-server-cert.html)发现问题“服务器缺少中间证书”。果然是证书问题,但以前申请的都正常啊。
于是想到是一键部署的问题,登录服务器,找到配置文件,发现只配置了2个文件,缺少一个root_bundle.crt的文件,而这个正是证书链文件。
结果
于是,到腾讯有控制台下载证书,上传,增加配置项:
SSLCertificateFile /usr/.../cxc.yuanrb.com.crt SSLCertificateKeyFile /usr/.../cxc.yuanrb.com.key SSLCertificateChainFile /usr/.../root_bundle.crt
重启apache,再次检测,果然没问题。微信小程序也访问正常。