部署微信小程序时如何配置阿里云SSL证书?

在部署微信小程序时,阿里云 SSL 证书本身不能直接“配置”到小程序后台,而是需要确保你的后端服务器(如云服务器 ECS、容器服务、CDN 等)已正确部署该证书,并且小程序请求的接口域名符合微信要求。以下是完整流程和关键点:


✅ 核心原则

  1. 微信小程序强制要求 HTTPS:所有网络请求(wx.request 等)的域名必须使用 HTTPS,且证书需由受信任的 CA 机构签发(阿里云证书支持)。
  2. 证书部署在后端服务器:不是上传到微信后台,而是部署在你自己的服务器(ECS/Nginx/Tomcat/容器等)。
  3. 域名需在微信后台备案:即使有 SSL 证书,域名也必须在【微信公众平台 → 开发 → 开发设置 → 服务器域名】中配置为合法业务域名。

🔧 详细步骤

步骤 1:在阿里云购买/申请 SSL 证书

  • 登录 阿里云 SSL 证书控制台
  • 选择「免费」或「付费」证书类型(推荐 DV 型,个人/企业均可)
  • 填写域名(如 api.yourdomain.com),完成域名验证(DNS 或文件验证)
  • 下载证书包(含 .crt.key 文件)

💡 注意:证书域名必须与小程序调用接口的域名完全一致(包括子域名)。


步骤 2:将证书部署到你的服务器

以最常见的 Nginx 为例:

server {
    listen 443 ssl;
    server_name api.yourdomain.com;

    ssl_certificate /path/to/cert.pem;          # 阿里云下载的 .crt 文件
    ssl_certificate_key /path/to/key.key;       # 阿里云下载的 .key 文件
    ssl_protocols TLSv1.2 TLSv1.3;              # 建议仅启用安全协议
    ssl_ciphers HIGH:!aNULL:!MD5;               # 强加密套件

    location / {
        proxy_pass http://localhost:8080;       # 转发到你的后端服务
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

✅ 重启 Nginx 生效:

sudo nginx -t && sudo systemctl reload nginx

📌 其他环境参考:

  • Tomcat:修改 server.xml 中的 Connector,指定 keystoresslProtocol
  • Docker + Nginx:挂载证书文件到容器内,配置同上
  • 阿里云 CDN/SLB:可在控制台直接上传证书并绑定域名

步骤 3:在微信公众平台配置域名

  1. 登录 微信公众平台
  2. 进入 开发 → 开发管理 → 开发设置
  3. 在「服务器域名」区域添加:
    • request 合法域名https://api.yourdomain.com(带 https 前缀)
    • (可选)upload/download 等其他域名按需求配置
  4. 保存后等待审核(通常几分钟~几小时)

⚠️ 重要限制:

  • 每个小程序最多配置 20 个 request 域名
  • 域名必须已通过 ICP 备案(中国大陆服务器)
  • 证书必须有效且未过期

步骤 4:测试验证

  • 使用工具检查证书是否链式完整:
    openssl s_client -connect api.yourdomain.com:443 -servername api.yourdomain.com

    确认输出中包含 Verify return code: 0 (ok)

  • 在小程序开发工具中发起请求,观察是否出现:
    错误:未在下图中配置的域名... → 说明域名未备案或配置错误
    错误:证书无效/不受信任 → 说明证书部署失败或中间证书缺失

🔁 常见问题排查

问题 可能原因 解决方案
“证书不受信任” 缺少中间证书 下载阿里云提供的 bundle.crt(含根+中间),合并到 ssl_certificate 路径
“域名未配置” 微信后台未加域名 检查是否加了 https:// 前缀;确认域名拼写一致
“403 Forbidden” Nginx 权限或防火墙拦截 检查 iptables、安全组规则(开放 443)、文件权限
小程序本地调试不通过 开发环境未用真实域名 开发阶段可用「开发环境」临时域名(仅限本地调试),正式提交必须用备案域名

📎 附加建议

  • 开启 HSTS 提升安全性(在 Nginx 中添加 add_header Strict-Transport-Security "max-age=63072000";
  • 定期监控证书有效期(阿里云提供到期提醒)
  • 若使用多域名,可为每个独立域名申请独立证书(避免通配符证书在某些场景受限)

如需具体某类服务器(如 Spring Boot、Node.js、K8s)的配置示例,可告知技术栈,我可提供对应方案。