微信小程序连接服务器需要配置https服务,一开始觉得应该挺难,在折腾的过程中也踩过一些坑,但是弄好了之后发现还挺简单的,我用的阿里云的服务器,所以用阿里云平台申请证书(小白,使用的免费证书,可能安全性不咋滴)操作步骤(后端使用nodejs)如下:
购买->申请证书->下载证书->生成私钥->配置服务器
1/5_申请证书:
登录阿里云,进入云盾证书服务购买证书(阿里云的免费版的是个人的)
2/5_申请证书:
这一步忘记截图了。
3/5_申请证书:
申请成功之后就可以下载了。
4/5_生成crt文件
下载Win64 OpenSSL v1.1.1d Light,然后将自己的key文件和pem文件放入该软件安装目录的bin目录(这是server.key
和server.pem
),打开控制台。
参考 凝雨 - Yun的博客中第二个方法。
5/5_配置服务器
之后将下载的证书解压(里面包含一个key文件和一个pem文件),放入项目中。
以下是我的代码 (nodejs–>express框架)。
const express = require("express")
const app = express();
const https = require("https");
const fs = require("fs");
const options = {
key:fs.readFileSync("./server.key","utf8"),
cert:fs.readFileSync("./server.crt","utf8")
}
app.get("/",(req,res)=>{
res.send("hi,this is https!");
})
const server = https.createServer(options, app)
server.listen(443, ()=>{
console.log("https is working!")
})
启动项目之后,在浏览器中输入https://127.0.0.1/
,将会出现如下图所示页面
估计是因为免费证书的安全性不高所以提示的,这里点击高级,然后继续访问皆可以了。
到这里,应该就可以为小程序开启服务了(如果没有用问题就不要往下看了)
-------------------------------------------分界线-------------------------------------------------
我的微信小程序报错了,有如下提示 request:fail 此服务器的证书无效
我推测应该是因为证书是个人版本的,而我的小程序是企业的,于是想办法购买一个企业的SSL证书,恰好腾讯云上有免费的,于是上腾讯云上免费购买了一个。
需要的域名验证指引操作如下链接(腾讯云)
之后的操作和阿里云的差不多,只是下载压缩包的文件是一个key文件和一个crt文件。
直接使用就可以了。