微信小程序访问nodejs后端,配置https,
本文以腾讯云申请的免费SSL证书和express命令行生成的项目代码为例。
在腾讯云申请的免费SSL证书压缩包解压后有4种证书,分别是Tomcat、Nginx、IIS、Apache需要的证书。
那么,nodejs代码中key和crt应该 使用哪种证书呢?如果使用错误,在微信开发者工具也是能成功的,
但是在真机测试的时候就会报以下错误,request:fail ssl hand shake error.
经过多次掉坑和调试,最终得到的结果是需要使用Nginx里的key和crt文件
把解压的Nginx文件夹放到项目根目录,只需要修改下bin目录下的www文件就能完成https的配置!
1、修改端口号,把3000改为443
let port = normalizePort(process.env.PORT || '443');
2、引入https、path和fs模块,添加几行代码,原来的http.createServer删掉
let fs = require('fs');
let path = require('path');
let https = require('https');
let server = https.createServer({
key: fs.readFileSync(path.resolve(__dirname, '../Nginx/2_www.nodejs999.com.key'), 'utf8'),
cert: fs.readFileSync(path.resolve(__dirname, '../Nginx/1_www.nodejs999.com_bundle.crt'), 'utf8')
}, app);
这样就完成了nodejs端的https配置。如果需要同时支持http和https也是可以的,原来的http不删除。
下面是我个人的小程序二维码。