如果你正准备上线一个微信小程序,但后端服务还在用 HTTP 协议,那现在必须停下来——不是“建议”,而是技术强制门槛。
微信平台对网络请求有明确的协议约束:所有 wx.request、wx.uploadFile、WebSocket(wx.connectSocket)等 API,都要求目标地址使用 HTTPS 或 WSS。这意味着,哪怕你本地调试通了,只要服务器没启用 TLS 加密,开发者工具会直接拦截请求,并提示 “net::ERR_CERT_COMMON_NAME_INVALID” 或 “request:fail net::ERR_CONNECTION_REFUSED” 类错误。
为什么免费 SSL 证书能过微信校验?
微信小程序不校验证书类型(DV/OV/EV),只校验三点:
- 域名匹配:证书绑定的域名必须与请求 URL 的 host 完全一致(例如请求
https://api.example.com,证书必须含api.example.com或通配符.example.com); - 有效链路:证书需由受信任的 CA 签发,且证书链完整(根证书 + 中间证书需一并部署);
- TLS 协议支持:服务端必须启用 TLS 1.2 或更高版本(TLS 1.0/1.1 已被微信明确拒绝)。
阿里云提供的免费型 DV SSL 证书,满足全部三项基础要求:
| 校验项 | 免费 DV 证书支持情况 | 说明 |
|---|---|---|
| 域名匹配 | ✅ 支持单域名(如 api.example.com) |
不支持泛域名(.example.com);若需多子域,需分别申请或升级 |
| 信任链完整性 | ✅ 由 DigiCert 等国际 CA 签发,根证书预置在主流系统中 | 证书包含 fullchain.pem(含中间证书),部署时必须使用该文件 |
| TLS 版本兼容性 | ✅ 默认支持 TLS 1.2 / 1.3 | 需在 Web 服务器配置中显式启用(如 Nginx 的 ssl_protocols TLSv1.2 TLSv1.3;) |
从申请到生效:四步完成 HTTPS 接入(实操流程)
以下步骤基于通用 Linux 服务器(Nginx 环境),所有操作均可在 15 分钟内完成,无需重启服务(支持热重载)。
-
申请证书(DNS 验证方式,最快)
- 登录云平台控制台,进入 SSL 证书服务页;
- 选择「免费证书」,填写要保护的域名(如
api.example.com); - 选择「DNS 验证」,系统将生成一条
TXT记录(如_acme-challenge.api.example.com); - 在你的域名 DNS 管理后台添加该记录(生效通常 <10 分钟);
- 点击「验证」,状态变为「已签发」后下载证书包(含
fullchain.pem和privkey.pem)。
-
上传证书到服务器
- 创建安全目录:
sudo mkdir -p /etc/nginx/ssl/api.example.com; - 上传两个文件(建议用
scp或 SFTP):
scp fullchain.pem user@your-server:/etc/nginx/ssl/api.example.com/
scp privkey.pem user@your-server:/etc/nginx/ssl/api.example.com/ - 设置权限:
sudo chmod 600 /etc/nginx/ssl/api.example.com/.pem。
- 创建安全目录:
-
配置 Nginx 启用 HTTPS
- 编辑站点配置(如
/etc/nginx/conf.d/api.example.com.conf); - 添加监听 443 端口的 server 块(关键字段已加粗):
server { listen 443 ssl http2; server_name api.example.com; ssl_certificate /etc/nginx/ssl/api.example.com/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/api.example.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers off; 强制 HSTS(可选但推荐) add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location / { proxy_pass http://127.0.0.1:3000; 假设后端运行在本地 3000 端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- 编辑站点配置(如
-
验证与上线
- 语法检查:
sudo nginx -t(必须返回success); - 重载配置:
sudo nginx -s reload; - 本地测试:
curl -I https://api.example.com,应返回HTTP/2 200; - 用 SSL Labs 测试工具验证评级(目标:A 或 A+);
- 在微信开发者工具中修改 request 地址为
https://api.example.com/xxx,确认请求成功。
- 语法检查:
常见陷阱与绕不开的细节(实测避坑)
- 证书链缺失:只部署
privkey.pem和certificate.pem(不含中间证书)会导致 iOS 微信客户端握手失败;务必使用fullchain.pem; - 时间不同步:服务器系统时间误差 >5 分钟,会导致证书“尚未生效”或“已过期”;运行
sudo timedatectl set-ntp on同步 NTP; - HTTP 重定向未配置:微信开发者工具可能缓存 HTTP 请求;建议在 80 端口添加 301 跳转:
return 301 https://$host$request_uri;; - 后端响应头缺失:若后端是 Node.js/Express,需显式设置
res.set('Access-Control-Allow-Origin', '')(开发阶段),否则跨域报错会掩盖 HTTPS 问题。
替代方案对比:什么情况下该考虑其他选择?
免费 DV 证书适合绝大多数起步阶段的小程序,但以下场景建议评估升级:
| 场景 | 免费 DV 证书 | 付费 OV 证书(假设性示例) |
|---|---|---|
单域名 API 接口(如 api.example.com) |
✅ 完全适用 | ✅ 适用,但无额外收益 |
多子域共用(如 api.example.com + upload.example.com) |
❌ 需分别申请两个免费证书 | ✅ 支持泛域名(.example.com) |
| 企业品牌展示需求(如证书详情页显示公司名称) | ❌ 仅显示域名,无组织信息 | ✅ 证书中包含已验证的公司名称 |
| 金融/支付类敏感业务(非强制,但增强信任) | ✅ 技术合规,但无组织背书 | ✅ 更高信任等级,部分风控系统会校验 OV 属性 |
常见问题 FAQ
| 问题 | 解答 |
|---|---|
| 免费证书有效期多久?到期前要重做吗? | 有效期为 1 年;支持自动续签(需 API 接入或控制台手动操作),续签后需重新部署新证书文件。 |
| 微信小程序能用自签名证书吗? | ❌ 不能。自签名证书不被任何主流客户端信任,微信会直接拒绝连接。 |
| 证书部署后,微信开发者工具仍报错“request:fail ssl hand shake error”怎么办? | 检查三项:① Nginx 是否监听 443 且配置无语法错误;② fullchain.pem 是否包含完整证书链;③ 服务器时间是否准确(date 命令验证)。 |
| 后端是 Python Flask/FastAPI,还需要额外配置吗? | 不需要。HTTPS 由 Nginx 终止,后端仍走 HTTP 内网通信;只需确保 Nginx 的 proxy_pass 指向正确地址和端口。 |
| 证书申请时填错了域名,能修改吗? | 不能修改已签发证书;需重新申请新证书,并替换服务器上的文件后重载 Nginx。 |
| 厂商 | 配置 | 带宽 / 流量 | 价格 | 购买地址 |
|---|---|---|---|---|
| 腾讯云 | 4核4G | 3M | 79元/年 | 点击查看 |
| 腾讯云 | 2核4G | 5M | 188元/年 | 点击查看 |
| 腾讯云 | 4核8G | 10M | 630元/年 | 点击查看 |
| 腾讯云 | 4核16G | 12M | 1024元/年 | 点击查看 |
| 腾讯云 | 2核4G | 6M | 528元/3年 | 点击查看 |
| 腾讯云 | 2核2G | 5M | 396元/3年(≈176元/年) | 点击查看 |
| 腾讯云GPU服务器 | 32核64G | AI模型应用部署搭建 | 691元/月 | 点击查看 |
| 腾讯云GPU服务器 | 8核32G | AI模型应用部署搭建 | 502元/月 | 点击查看 |
| 腾讯云GPU服务器 | 10核40G | AI模型应用部署搭建 | 1152元/月 | 点击查看 |
| 腾讯云GPU服务器 | 28核116G | AI模型应用部署搭建 | 1028元/月 | 点击查看 |
所有价格仅供参考,请以官方活动页实时价格为准。