openresty ssl问题解决

最近在捣鼓微信小程序,在使用openresty的ssl发起https调用时,报如下错误:

lua ssl certificate verify error: (20: unable to get local issuer certificate),

openresty ssl问题解决

经排查发现是nginx中配置的证书问题,那么本地究竟应该使用哪个证书呢,我发现/etc/ssl/certs下有一大堆,具体配置哪一个,网上很多文章其实都只合适他们自己,并不一定正确。

当在shell中直接使用curl是可以发起正常的https请求的,于是集中问题为,curl在发https时使用的是哪个证书,经google发现可以使用如下命令:

curl  -v -s -k 'https://api.weixin.qq.com/cgi-bin/token?xxxx' 

得到如下输出:

openresty ssl问题解决openresty ssl问题解决
可以看到握手时使用的cert为 /etc/ssl/certs/ca-certificates.crt.
修改配置
lua_ssl_trusted_certificate '/etc/ssl/certs/ca-certificates.crt';

之后即可正常发起https请求。