微信的特殊要求: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+ 的强制要求,避免因协议兼容导致真机请求失败。