微信的特殊要求:TLS必须1.2以上,还有SSL证书的信任链问题。很多开发者容易栽在这两点上,比如用了TLS1.1或者自签名证书。还要提醒SNI这种特殊情况,云服务商用得比较多。微信小程序强制要求所有网络请求必须通过 HTTPS 协议进行,因此正确配置 SSL 证书至关重要。下面是配置要点和注意事项:

核心配置要点

证书类型要求

必须受信任:证书必须由微信信任的公共证书颁发机构(CA)签发(如 DigiCert、GlobalSign、Let's Encrypt 等)。

禁止自签名证书:自签名证书或私有 CA 签发的证书将被拒绝。

推荐 DV/OV 证书:域名验证(DV)或组织验证(OV)证书均可,无需 EV 证书。

证书有效期

确保证书未过期,且有效期覆盖小程序运行周期。

建议设置自动续签(如 Let's Encrypt 证书每 90 天续签)。

域名匹配

证书的 Subject Alternative Name (SAN) 必须包含小程序请求的完整域名(如 api.example.com)。

支持通配符证书(如 *.example.com),但需注意通配符仅覆盖一级子域(a.example.com 有效,a.b.example.com 无效)。

TLS 协议与加密套件

TLS 版本 ≥ 1.2(微信强制要求,TLS 1.0/1.1 会被拒绝)。

禁用不安全的加密套件(如 RC4、DES)。

推荐配置:

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

证书链完整性

必须包含中间证书:上传证书时需绑定完整的证书链(服务器证书 + 中间证书),否则导致信任链断裂。

可通过工具验证:SSL Labs SSL Test

服务器配置

SNI 支持:若单 IP 托管多个域名,确保服务器支持 SNI(Server Name Indication)。

HSTS 建议启用:添加 Strict-Transport-Security 响应头强制 HTTPS。

HTTP 重定向:将 HTTP 请求 301 重定向到 HTTPS。

微信特殊要求

根证书信任列表

微信使用内置的 CA 根证书列表(与主流操作系统/浏览器相似)。可通过 微信官方文档 查看兼容性。

TLS 1.2+ 强制要求

部分旧服务器(如 Windows Server 2008 R2)默认未启用 TLS 1.2,需手动开启。

证书域名与备案一致

若域名需 ICP 备案(中国大陆服务器),证书域名必须与备案域名一致。

配置步骤

获取证书

从 CA 购买或申请免费证书(如 Let's Encrypt、阿里云/腾讯云免费 DV 证书)。

安装证书

Nginx:将 server.crt(公钥+中间证书)和 server.key(私钥)配置到 ssl_certificate 和 ssl_certificate_key。

Apache:使用 SSLCertificateFile(公钥)和 SSLCertificateChainFile(中间证书)。

强制 HTTPS

nginx

server {

listen 80;

server_name yourdomain.com;

return 301 https://$server_name$request_uri;

}

验证配置

浏览器访问:检查地址栏锁图标是否正常。

命令行:openssl s_client -connect yourdomain.com:443 -tlsextdebug 2>&1 | grep "TLS Version"。

使用微信开发者工具真机调试,抓包检查请求是否成功。

常见错误排查

错误场景 解决方法

证书链不完整 通过 SSL Checker 补全中间证书

TLS 版本过低 在服务器配置中禁用 TLS 1.0/1.1(如 Nginx 配置 ssl_protocols TLSv1.2 TLSv1.3;)

域名不匹配 确保证书的 SAN 包含请求的完整域名

证书过期/未生效 检查证书有效期,更新后重启服务器

微信开发者工具报错 开启“不校验合法域名”调试,但真机必须配置正确

推荐工具

SSL Labs SSL Test:全面检测证书配置与安全评级。

myssl.com:国产快速检测工具,支持证书链、协议兼容性检查。

微信开发者工具:通过“真机调试”或“请求详情”查看 TLS 版本及错误码。

用户根据以上配置要点和要求配置SSL证书,使用受信任 CA 的证书、确保证书链完整、强制 TLS ≥1.2、域名严格匹配,并通过工具验证。尤其注意微信对 TLS 1.2+ 的强制要求,避免因协议兼容导致真机请求失败。