巨坑!!!
我碰到的问题是使用的 https 的地址,浏览器访问检验都没有问题。但提交老是出现“系统发生错误,请稍后重试”的提示,Nginx access log里没有日志。网上翻了无数文章,都解决不了。刚开始是怀疑微信是不是有问题或者没有认证,但后来换成 http 地址,竟然一下就成功了,贼郁闷。整整折腾了一天,终于可以了,给大家分享一下。
问题分析:
其实从Nginx里没有日志输出,我猜到问题应该是在SSL协议认证上。所以后面大部分时间是在调试Nginx配置。
总结:
原因1:微信认证要求SSL证书需要有证书链,通常用Let's Encrypt生成的证书是没有问题的,就是用 fullchain.pem证书,如果不是,那就需要改成这个完整证书。
原因2:微信认证要求支持 TLSv1.2 和 TLSv1.3 协议,如果默认是1.3就需要修改一下配置。在Nginx 的Server域里修改
ssl_protocols TLSv1.2 TLSv1.3;
但是特别注意,如果你用的是二级域名,或者反正是按虚拟机配置的,注意这段需要改在 default_server 的Server域里,其它主机配置里增加是没用的。
listen 443 ssl http2 default_server; server_name www.***.com; ssl_protocols TLSv1.2 TLSv1.3;
完了可以先用下面这条命令测试一下:
openssl s_client -connect www.***.com:443 -tls1_2 2> /dev/null | grep -i -E "cipher|protocol"
如果显示正常的 cipher 信息,那就是可以了。
大神,我安装你的方法没有解决,用http就正常,改成https就不行了
超赞!!这里也可以免费申请SSL证书,也可以在线免费下载完整SSL证书链。