小程序踩坑之旅(二)request:fail错误

0

在开发小程序的过程中有些人会遇到这样的问题,在开发者工具中可以正常请求接口获得数据,但是在手机预览和上线之后就会请求失败。怎么回事呢?

报错信息:request:fail ssl hand shake error
或者:此服务器的证书无效。
证书无效

一下列出可能这一情况的原因:。

后台域名没有配置

域名不支持https

没有重启工具

域名没有备案,或是备案后不足24小时;备案未生效

ssl协议有问题

  • Geotrust先检查下你的站点。把一些常规的问题解决掉,比如中级证书没装,等等问题。
  • 微信支持,且只支持ssl_protocols TLSv1.2及以上版本;所以,你需要把SSL V2,SSL V3这些协议都删掉
  • 加密方式ssl_ciphers AES128+EECDH:AES128+EDH:!aNULL

小程序需要TLS 版本支持1.2及以下版本:小程序需要TLS windows系统至少要2008R2以上,才能支持1.0、1.1、1.2 少一个版本不支持都不行。所以03系统想折腾小程序的朋友,自己装R2以上或用linux系统
免费的证书可以到阿里云,腾讯云。
ps:给大家提个醒 startcom 下面的dv ssl 证书, 亲测 在ios10 小程序中无法请求成功 在ios9 下可以请求成功,然后换成鹅厂的免费证书,全部都没有问题了。这不是广告 折腾了两天发现ios10 可能已经对startcom 有处罚了

证书问题

测试是否为证书问题:
同时测试ios和安卓,假如有一方可以,一方不行,则是证书问题,请选用受认可的证书
检测地址:https://www.qcloud.com/product/ssl.html#userDefined10
  • 证书受信任的问题,部分国内签发的SSL证书,在Android上不受信任,推荐GeoTrust;
  • 如果页面有动静分离,静态资源使用独立域名的话,也需要为该域名申请证书;
  • android低版本不支持SNI扩展,受此限制,一台服务器只能部署一个数字证书;

配置中间证书

参考 http://www.wxapp-union.com/forum.php?mod=viewthread&tid=4897

报错 request:fail ssl hand shake error

可以请求数据,真机预览无法请求服务器数据

  1. 配置ssl时内容填写不完善
  2. 少了一份证书,配置的证书不是小程序https地址的证书,然后配置了一个中级证书
  3. tls需要支持1.0 1.1. 1.2版本
  4. wx.request 请求参数method的value要大写(例如:GET)。
  5. 下载最新的微信客户端
  6. 检查手机系统时间是否为当前日期,系统时间与当前时间相差过长,会导致证书过期,调整到当前日期即可。
    ps:如果用的是腾讯云提供的免费证书。腾讯云下载证书zip文件,解压后务必使用nginx目录中的root crt 和 key两个文件。

ssl检测地址:https://www.myssl.cn/tools/check-server-cert.html

https端口使用8443时无法访问,需改成443

本人也是遇到了ssl证书问题,然后查阅了一下资料解决了。如果有什么新的问题或者想了解详细的解决方案及案例,可以移步到这位大佬的博客