返回文章列表

域名备案-微信小程序接口开发-SSL免费证书部署

详细介绍如何为微信小程序配置HTTPS域名、申请阿里云SSL免费证书以及Nginx配置部署流程

6 min read

前言

在开发微信小程序中使用网络相关的 API 时,需要注意下列问题:

微信小程序必须使用 HTTPS/WSS 发起网络请求。请求时系统会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。

证书要求

对证书要求如下:

  • HTTPS 证书必须有效;证书必须被系统信任,即根证书被已系统内置
  • 部署 SSL 证书的网站域名必须与证书颁发的域名一致
  • 证书必须在有效期内
  • 证书的信任链必需完整(需要服务器配置)
  • iOS 不支持自签名证书
  • iOS 下证书必须满足苹果 App Transport Security (ATS) 的要求
  • TLS 必须支持 1.2 及以上版本。部分旧 Android 机型还未支持 TLS 1.2,请确保 HTTPS 服务器的 TLS 版本支持 1.2 及以下版本
  • 部分 CA 可能不被操作系统信任,请开发者在选择证书时注意小程序和各系统的相关通告。Chrome 56/57 内核对 WoSign、StartCom 证书限制周知

证书验证

证书有效性可以使用以下命令验证:

bashopenssl s_client -connect example.com:443

也可以使用其他在线工具。

除了网络请求 API 外,小程序中其他 HTTPS 请求如果出现异常,也请按上述流程进行检查。如 https 的图片无法加载、音视频无法播放等。

下面的步骤就告诉你,如何把自己的服务器 IP 地址改为认证后的 HTTPS 的域名。你需要满足几个条件。

一、域名备案

我默认你已经拥有了自己的域名,那么你可以从云服务商中进行域名备案(购买域名的服务商和备案的可以不同)。

进行域名备案需要你有云服务器且服务器剩余时常大于3个月,如果不满足条件,系统无法搜索到对应资源。

二、开启阿里云 SSL 免费证书

阿里云可以自动 DNS 验证,操作步骤如下:

1. 开启 SSL 证书

点击进入域名详细,点击开启 SSL 证书。

2. 购买免费证书

点击侧栏 SSL 证书,并在右侧菜单栏选择购买免费证书。

3. 创建证书

购买之后点击创建证书,输入域名申请证书。

4. 提交审核

点击操作的证书申请,写相关的信息,点击提交审核(审核速度很快)。

5. 下载证书

申请通过后,点击下载,选择 Nginx,证书格式是 pem/key。

6. 上传证书到服务器

将压缩包解压,把得到的 pem 及 key 文件放到服务器上(我放的位置是 /etc/ssl)。

7. 配置 Nginx

重新配置你的 nginx.conf 后重启 nginx。

nginx# 后端API服务映射,通过前缀区分,并添加CORS配置
server {
    listen 443 ssl;  
    server_name api.skywang.asia;  
  
    ssl_certificate /etc/ssl/api.skywang.asia.pem; 
    ssl_certificate_key /etc/ssl/api.skywang.asia.key; 
  
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 支持的协议  
    ssl_ciphers HIGH:!aNULL:!MD5; # 使用的密码套件  
  
    location / {  
        proxy_pass http://127.0.0.1:8001; # 代理到后端服务的8001端口  
  
        proxy_set_header Host $host;  
        proxy_set_header X-Real-IP $remote_addr;  
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
    }  
  
    # 静态资源处理保持不变  
    location /api/uploads/ {  
        alias /www/wwwroot/blog_go/public/uploads/;  
        try_files $uri $uri/ =404;  
    }  
  
    # 可选:为了重定向 HTTP 到 HTTPS  
    # server {  
    #     listen 80;  
    #     server_name api.skywang.asia;  
    #  
    #     return 301 https://$host$request_uri;  
    # }  
}

三、至此完成自定义域名的配置

输入 HTTPS 的服务域名地址接口能请求,至此完成自定义域名的 HTTPS 配置。

总结

通过以上步骤,我们成功完成了:

  1. 域名备案流程
  2. 阿里云 SSL 免费证书申请
  3. Nginx HTTPS 配置
  4. 微信小程序 HTTPS 域名部署

现在你的微信小程序可以正常使用 HTTPS 接口进行网络请求了。