可以,但有严格的前提条件。Let’s Encrypt 证书本身是受信任的 CA 签发的,小程序官方并不排斥它,关键看你如何配置。
核心要求:必须正确配置证书链
小程序对 HTTPS 证书的校验比普通浏览器更严格。Let’s Encrypt 证书完全能用,但部署时有一个最容易踩的坑:服务器必须发送完整的证书链。
阿里云SSL云盾证书(免费+付费): https://www.aliyun.com/product/ssl-certificate
阿里云服务器ECS 99元1年,续费不涨价: https://www.aliyun.com/minisite/goods
腾讯云轻量云服务器: https://cloud.tencent.com/act/cps/redirect?redirect=36719
京东轻量云服务器: https://3.cn/1YX-MxJv
微信官方文档要求证书的“信任链必需完整”。很多开发者用 Nginx 配置时,只指定了域名证书文件(如 cert.pem),而漏掉了中间证书,导致浏览器能打开但小程序真机请求失败。
正确做法:在 Nginx 配置中,ssl_certificate 必须指向 fullchain.pem(它包含了域名证书和中间证书),而不是 cert.pem。
其他必须满足的条件
除了证书链,还有几个硬性门槛:
-
域名已备案:小程序服务器域名必须经过 ICP 备案。
-
TLS 版本:必须支持 TLS 1.2 及以上。
-
证书有效且域名匹配:证书在有效期内,且颁发的域名与你请求的域名完全一致。
-
自动续期:Let’s Encrypt 证书有效期较短(通常 90 天),务必配置自动续期任务。证书一旦过期,小程序请求会直接失败。
怎么验证配好了?
配置完后,别只看浏览器的小锁。可以在服务器上运行以下命令检查证书链是否完整:
openssl s_client -connect 你的域名:443 -servername 你的域名 -showcerts
观察输出中 BEGIN CERTIFICATE 出现了几次。出现 2 次或以上(域名证书 + 中间证书),通常才是合格的;只出现 1 次意味着链不完整,小程序真机很可能报错。
小结:Let’s Encrypt 免费证书可以给小程序用,省钱完全可行。只要你确保服务器返回了 fullchain.pem 且域名已备案、开启了自动续期,就没问题。
CLOUD云枢