最近小程序开发测试环境一直转转不请求接口,iOS可以正常访问,安卓无法访问,提示: request:fail -2:net::ERR_FAILED 检查后发现是因为没有配置中间人证书。由于测试环境我们使用的是acme申请let's encrypt的泛域名证书。
由于我们的DNS解析托管在DNSPOD,因此就可以使用
export DP_Id="43211" #DNSPOD APP_ID
export DP_Key="123123ss123112e21e332e432e32e" #DNSPOD KEY
acme.sh --issue --dns dns_dp -d abc.cn -d *.m.abc.cn -d *.abc.cn #域名,这里生成 abc.cn *.abc.cn *.t.abc.cn的泛影证书
还有托管在阿里云的解析就是
export Ali_Key="kkkkkkeeeeeyyyyyyyyy"
export Ali_Secret="ssssseeeeeccccrrrrreeeeetttttt"
acme.sh --issue --dns dns_ali -d xyz.cn -d *.xyz.cn
就可以生成了。
在~/.acme目录下就生成了对应证书的目录
比如我的域名是abc.cn,则在~/.acme/abc.cn目录下就有
ca.cer fullchain.cer abc.cn.cer abc.cn.conf abc.cn.csr abc.cn.csr.conf abc.cn.key
对应的文件,之前我用的是abc.cn.cer和abc.cn.key
nginx的配置就是
#ssl_certificate host/keys/abc.cn.cer; #使用这个文件小程序无法使用
ssl_certificate host/keys/fullchain.cn.cer; #使用这个正常访问
ssl_certificate_key host/keys/abc.cn.key;
但是这样之后就发现小程序不行,必须要使用fullchain.cer这个证书。
我们可以看到fullchain.cer和abc.cn.cer就缺了个ca.cer
当然如果你不知道你的ca.cer到底是多少你可以到https://www.myssl.cn/tools/downloadchain.html把你的证书文件复制进去,即可知道你的中间人证书。