问题描述
使用http验证token
时,可以验证成功。
使用https
验证token
时,验证失败,并且PHP log记录里也没查看到有微信发送消息的记录。
问题分析
1、我用的是宝塔面板,开了Nginx
防火墙,所以我关了“非浏览器拦截”。
2、在微信开放社区里,关于“token
验证失败”的问题很多,我也挨个看了一遍,最后找到ssl
的问题。之所以会想到这个ssl
,是因为在支付宝支付开发的时候,也遇到过ssl
的问题:http
时调用支付成功,https
时调用支付失败。
问题解决
原因就是 网站配置的SSL证书没有CA根证书。
浏览器内置CA根证书,所以用浏览器访问网站的时候是正常的;而微信的安全验证不是通过浏览器验证的,所以就不安全了。也就验证失败了。
ssl证书,我虽然也用,但了解的不够详细。
原本我是SSL证书是在腾讯云申请的,在里面我没有找到现成的CA根证书,放弃。
我找到宝塔里的免费SSL,发现有现成的根证书:
在这里申请成功后,就会有根证书:
直接使用,就可以验证成功了。
原文地址:https://www.jianzhanmi.com/weixin/weixingongzhonghao-token.html
成功示例
备注:上面的url、token、密钥都是错的。
这个令牌Token是哪里的token啊?