问题
Unity3d使用UnityWebRequest组件调用https(类似https://xxx.com/apipath)接口数据,然后报错
Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED
和
SSL CA certificate error
:
大致的意思是证书验证失败 和 SSL CA证书错误。
尝试使用Postman进行测试,得到也是类似的错误:
和后台接口提供人员沟通了一下,他给的答案是
postman关闭ssl
和
HttpClient配置SSL绕过https证书
,他没搞过Unity3d的,所以让我自己去研究了。
我尝试关闭了Postmam的SSL certificate verification选项后果真可以正常调用接口请求数据了。
Postman关闭ssl方法:
解决方法
弄清楚了问题的根源就好说了,要解决这个问题其实就是如何让UnityWebRequest绕过或者忽略ssl证书的验证即可。
解决方式是重写CertificateHandler的验证函数(ValidateCertificate)使其不进行验证永远返回true即可(建议仅有此问题的才使用该 CertificateHandler)。
重写的代码:
using UnityEngine.Networking;
public class WebReqSkipCert : CertificateHandler
{
protected override bool ValidateCertificate(byte[] certificateData)
{
return true;
}
}
这里的类WebReqSkipCert 继承了CertificateHandler 然后仅重写了ValidateCertificate(byte[] certificateData)函数让其永远返回true,实现跳过ssl验证的功能。
该类的使用方法:
UnityWebRequest www = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST);
www.certificateHandler = new WebReqSkipCert();
www.timeout = 5000;
这样就算是解决了该报错的问题,个人认为还是弄弄接口服务器的证书可能更能根本解决这个问题,但如果他们不弄的话,我们这前端就只能卑微的打这种很勉强的补丁了,哈哈,惨~~~
咨询了后端的朋友,这种情况可能是用的私有证书或者未使用域名而是IP会有这种情况,而且这种进接口在浏览器上也会有不安全提示:
文章来源:https://www.toymoban.com/news/detail-789979.html
解决方法参考了 https://blog.csdn.net/final5788/article/details/105506603文章来源地址https://www.toymoban.com/news/detail-789979.html
到了这里,关于Unity3d UnityWebRequest调用接口报错Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!