在开发微信小程序中使用网络相关的 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 证书限制周知
证书有效性可以使用
openssl s_client -connect example.com:443
命令验证,也可以使用其他
在线工具。
除了网络请求 API 外,小程序中其他 HTTPS
请求如果出现异常,也请按上述流程进行检查。如 https 的图片无法加载、音视频无法播放等。
下面的步骤就告诉你,如何把自己的服务器ip地址改为认证后的https的域名。你需要满足几个条件。
1.你有自己的域名
2.你已从云服务器商进行域名备案
3.后端服务已经部署到公网
一、域名备案
我默认你已经拥有了自己的域名,那么你可以从云服务商中进行域名备案(购买域名的服务商和备案的可以不同),进行域名备案需要你有云服务器且服务器剩余时常大于3个月,如果不满足条件,系统无法搜索到对应资源。
二、开启阿里云ssl免费证书 (阿里云可以自动DNS验证)
1.点击进入域名详细,点击开启ssl证书。
2.点击侧栏ssl证书,并在右侧菜单栏选择购买免费证书。
3.购买之后点击创建证书,输入域名申请证书。
4.点击操作的证书申请,写相关的信息,点击提交审核(审核速度很快)。
5.申请通过后,点击下载,选择Nginx,证书格式是pem/key。
6.将压缩包解压,把得到的pem及key文件放到服务器上(我放的位置是/etc/ssl)。
7.重新配置你的nginx.conf后重启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配置