今天给一个客户去部署小程序环境,客户只给了key、crt和ca文件。以往我们都是直接在阿里云上申请的pem和key文件,想着用key和crt也可以部署,于是参照着以前的方式去配置一下:
nginx ssl配置
在重启Nginx之后报配置文件错误:
nginx报错
于是我打开客户给的crt文件一看,原来他给的证书内容是一行的,这和我们之前看到的结构不一样,例如客户给的格式是:
-----BEGIN CERTIFICATE----- 证书内容 -----END CERTIFICATE-----
于是我修改成
-----BEGIN CERTIFICATE-----
证书内容
-----END CERTIFICATE-----
的格式。再重启一下nginx。https终于可以访问了。然后赶紧提交小程序审核,发布。
等小程序审核通过之后我用安卓手机一扫码。居然是空白的!!!???程序没有错啊?我们其他已经发布正常的小程序都是这么写的啊。
于是我赶紧发到群里让其他同事扫码看一下,得出的结论是全部安卓手机扫码之后都是不正常的,只有苹果手机扫码才正常。
在浏览器里访问https是正常的,开发者工具里也正常的,苹果手机也是正常的,为什么单独安卓不行呢?
于是我打开小程序开发者工具来个真机调试看一看,原来后台已经报错了:
真机调试错误代码
MiniProgramError U.createEvent is function这种看起来不像是我们的小程序出问题。于是赶紧逛一下开发者论坛,原来论坛也有不少人出现这个问题。综合了一下解决方案,有说wx.showLoading()的问题,有些说是nginx中间件的问题。我想了一下,客户提供的ca都没有用上,并且我们之前配置pem文件的时候,里边也是有两段证书代码的,而crt里却只有一段,会不会是这个问题?
于是我把ca里的证书代码也按照三行的格式化一下,然后一起拷贝到crt文件里。例如:
-----BEGIN CERTIFICATE-----证书内容-----END CERTIFICATE----------BEGIN CERTIFICATE-----证书内容-----END CERTIFICATE-----然后再重启一下服务器,终于在安卓里边访问也正常了。