有用户反馈集成了 LeanCloud SDK 的 iOS app 中无法正常下载文件。经过调查,发现
- 如果在网页上直接访问 _Files 表里的 URL,所有文件的链接都只会返回 {"error":"download token not specified"} 错误(直接显示在网页上)。
- 在控制台中绑定的 HTTPS 文件访问域名的 SSL 一个月前过期了,在网页上 “已绑定” 的下方显示“申请证书失败:issueCert for tc-files.绑定的域名.com: Request failed with status code 401”。
- 于是尝试着手动更新 SSL 证书,在 ZeroSSL.com 上通过验证得到了一份 SSL certificate,其中包含 certificate.crt, ca_bundle.crt 和 private.key 三个文件,但 LeanCloud 控制台上手动更新 SSL 只能上传一个 crt 文件和一个 key 文件,上传 certificate.crt 和 private.key 后遇到错误 “request Qiniu API failed: 400 - {"code":400406,"error":"未知的证书链"} (500) [500 PATCH https://cn-n1-console-api.leancloud.cn/1.1/domain-center/domain-bindings/tc-files.绑定的域名.com]”。
- 但是 LeanCloud 控制台上莫名奇妙地又成功显示新的 SSL 证书上的新的过期日期。而打开网页访问某个文件 URL 还是显示 {"error":"download token not specified"} 错误,且浏览器上点击地址旁的🔐图标显示的证书还是之前已经过期的 SSL 证书。
- 最后又尝试先把绑定的文件访问域名的 HTTPS 切换成 HTTP,但切换后直接访问文件 URL 还是显示 {"error":"download token not specified"} 错误,在 iOS app 中尝试下载 HTTP URL 的文件则会报 “Request failed: unauthorized (401)” 错误(其他 API 访问都是正常的没有问题,只有文件会出错)。
请问:文件下载失败的原因是否是因为 SSL 过期(因为之前都正常运行,app 的这部分代码也很久没有修改过)?如果是的话,应该如何更新 SSL 或者如何解决下载文件时遇到的 {"error":"download token not specified"}?谢谢解答!