最近在捣鼓微信小程序,在使用openresty的ssl发起https调用时,报如下错误:
lua ssl certificate verify error: (20: unable to get local issuer certificate),
经排查发现是nginx中配置的证书问题,那么本地究竟应该使用哪个证书呢,我发现/etc/ssl/certs下有一大堆,具体配置哪一个,网上很多文章其实都只合适他们自己,并不一定正确。
当在shell中直接使用curl是可以发起正常的https请求的,于是集中问题为,curl在发https时使用的是哪个证书,经google发现可以使用如下命令:
curl -v -s -k 'https://api.weixin.qq.com/cgi-bin/token?xxxx'
得到如下输出:
修改配置
lua_ssl_trusted_certificate '/etc/ssl/certs/ca-certificates.crt';
之后即可正常发起https请求。