本文欢迎转载,转载请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from CSDN


前言

最近接触了一个有关微信小程序的项目。有关小程序后台服务的https配置踩了不少坑,折腾了一两天时间,终于实现了小程序后台服务的部署。这里就总结一下基于微信小程序,有关SpringBoot后台的配置方案。

分析一下微信官方文档

根据小程序官方文档描述,微信小程序的wx.request请求有如下几点要求

● 域名只支持 https (request、uploadFile、downloadFile) 和 wss (connectSocket) 协议;
● 域名不能使用 IP 地址或 localhost,且不能带端口号;
● 域名必须经过ICP 备案;
● 出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调用。开发者应将appsecret 保存到后台服务器中,通过服务器使用 appsecret 获取 accesstoken,并调用相关 API。

重点在于前三条。
第一条:只支持https请求。这就要求我们的后台服务需要配置一个SSL证书。
第二条:说明端口号支持443(https请求默认为443),并且必须是一个域名例如www.baidu.com而不能是IP地址。
第三条:域名要去备案。

这里就不介绍第三条域名的备案了。假设大家现在手里搞到了一个备了案的域名www.myweb.com

如何搭建后台环境?

第一步:申请一个SSL证书(免费的哦)

登录阿里云,申请一个免费的DV SSL证书
https://common-buy.aliyun.com/?spm=5176.2020520163.cas.4.406f1768JUOggq&commodityCode=cas#/buy
这里写图片描述
购买完证书后,在补全所属域名等信息。
如果信息填写都正确的话,证书很快就会通过审核。审核通过后,下载证书。
这里写图片描述
解压下载下来的压缩包,会得到如下文件
这里写图片描述
到这里,我们的证书准备工作就已经做完了。

在SpringBoot中配置SSL证书

首先,将.pfx文件放在resources目录下。这里假设是123465.pfx
然后在application.yml文件中填下如下配置

server:
  port: 443
  ssl:
    key-store: classpath:123456.pfx
    key-store-password: 123456
    keyStoreType: PKCS12

到此,SSL的配置就结束了。
此时,启动SpringBoot工程,会发现SpringBoot内置的Tomcat已经在443端口上启动了。当然了,前提是在443端口没有被占用的情况下。
这里写图片描述

第三步:微信开发者工具的配置

实际上,在本地开发调试的时候,不去操作前两步,也可以绕开HTTPS的限制,使用http请求而且也可以使用非443端口。只需要在【项目设置】中,勾选“不校验安全域名、TLS版本以及HTTPS证书”即可
这里写图片描述

然而,如果想要发布小程序,则必须要改成https请求。那么在项目部署到公网环境之前,想要在本地测试一下https请求是否好用时该怎么办呢?

我们可以通过修改hosts文件,将域名重定向到127.0.0.1地址上就可以在本地模拟访问域名https请求了。

首先在微信小程序开发者后台中,配置域名
这里写图片描述
注意,这里不能加端口号(文档中有提,https默认的端口号即为443),例如:https://www.myweb.com

之后,在系统hosts文件中添加如下(如何修改hosts文件网上资料很多,这里就不多做介绍了)

127.0.0.1 www.myweb.com

这样,在本机访问www.myweb.com就被重定向到本机地址上了。

取消勾选“不校验安全域名、TLS版本以及HTTPS证书”,在微信小程序中request请求的url地址就可以写成www.myweb.com/…,即可在项目部署到公网环境之前,在本地模拟对设置好的域名发送请求,以便在本地检测程序是否有问题。

总结一下

1.在本地开发时,暂时可以不需要SSL证书,request请求可以为http和任意端口号。
2.小程序最终发布时,需要后台支持https,并且需要合法域名。此时就需要有个一ICP备案的域名,购买ssl证书并在后台配置证书,配置小程序服务域名。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐