微信小程序确实要求后端接口必须使用HTTPS,所以SSL证书的配置非常重要。 在微信小程序要求所有网络请求必须通过 HTTPS 协议,正确配置 SSL 证书是开发过程中的关键步骤。下面说一下 SSL 证书配置的核心要点及注意事项:
1. 证书类型要求
必须由受信任的 CA 机构颁发:微信小程序不接受自签名证书(Self-Signed),必须使用由可信证书颁发机构(如 Let's Encrypt、DigiCert、GeoTrust 等)签发的证书。
推荐证书类型:
DV(域名验证证书):适用于大多数场景,验证域名所有权即可。
OV(组织验证证书) 或 EV(扩展验证证书):安全性更高,适合企业级应用。
通配符证书支持:若需支持多个子域名(如 api.example.com, cdn.example.com),可使用通配符证书(*.example.com)。
2. 证书有效期
证书必须有效:确保证书未过期,过期证书会导致小程序请求失败。
续期策略:建议设置自动续期(如 Let's Encrypt 证书每 90 天需续期),避免服务中断。
3. 域名匹配
完全一致原则:证书中的域名必须与小程序请求的域名严格匹配,包括:
主域名(如 example.com)
子域名(如 api.example.com)
支持多域名或通配符:
单域名证书:仅覆盖一个特定域名。
通配符证书:覆盖同一级子域名(如 *.example.com)。
多域名证书(SAN):支持多个不同域名。
4. 协议与加密算法
TLS 版本:服务器需支持 TLS 1.2 或更高版本(微信已禁用 TLS 1.0/1.1)。
加密套件:优先使用强加密算法(如 ECDHE-RSA-AES128-GCM-SHA256),禁用弱算法(如 RC4、MD5、SHA1)。
示例配置(Nginx):
nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
5. 证书链完整性
中间证书必须正确安装:证书链不完整会导致部分设备(如 Android)无法验证证书。需将 CA 提供的中间证书(Intermediate CA)与服务器证书合并。
验证方法:使用在线工具(如 SSL Labs SSL Test)检查证书链是否完整。
6. 服务器配置
正确部署证书文件:
私钥(.key 文件)和证书(.crt 或 .pem 文件)需上传至服务器。
私钥需保密,权限设置为 600(仅所有者可读)。
服务器软件配置:
Nginx:
nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/fullchain.pem; # 包含服务器证书和中间证书
ssl_certificate_key /path/to/private.key;
}
Apache:
apache
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/private.key
SSLCertificateChainFile /path/to/chain.pem
</VirtualHost>
7. HTTP 跳转与 HSTS
强制 HTTPS 访问:配置所有 HTTP 请求自动重定向到 HTTPS。
nginx
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
启用 HSTS:通过响应头 Strict-Transport-Security 强制浏览器使用 HTTPS。
nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
8. 微信小程序后台配置
域名白名单:在微信公众平台的小程序后台,将域名添加到 “开发设置” > “服务器域名” 中。
ICP 备案:域名需完成中国大陆的 ICP 备案(仅针对国内服务器)。
9. 常见问题排查
证书不信任:检查证书是否由受信任的 CA 签发,或证书链是否完整。
域名不匹配:确认证书覆盖的域名与请求域名一致。
协议或加密套件不兼容:禁用旧版 TLS 和弱加密算法。
混合内容问题:确保网页内所有资源(图片、CSS、JS)均通过 HTTPS 加载。
10. 工具推荐
证书检查工具:
SSL Labs SSL Test
Why No Padlock?
证书申请:
Let's Encrypt(免费,自动化工具 Certbot)
付费证书(如阿里云、腾讯云提供的证书服务)。
用户通过以上十点步骤,可确保 SSL 证书符合微信小程序的要求,保障数据传输安全并避免接口调用失败。部署完成后,务必通过微信开发者工具和真机测试验证 HTTPS 请求是否正常。