微信小程序确实要求后端接口必须使用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 请求是否正常。