-
前提是使用的服务端提供的域名证书,因为考虑其他第三方接入会有双向认证问题,所以只考虑使用客户端单向认证,官方文档上描述的是 “https 请求配置自签名证书” ,这个是否有区别?
-
首先使用的是只配置了host和服务端证书的base64格式调用认证 (域名xxx一下)
uni.configMTLS({ certificates:[{ 'host':'xxx.xxxsoft.com', 'server': [this.serverBase64] }], success: (res) => { console.log(res) } })
无论使用的是匹配host的证书,或者不匹配的证书,返回都是{"errMsg":"configMTLS:ok","code":0} ,这是一个疑惑的地方,不是不匹配的话不是应该返回认证失败?
-
调用uni.configMTLS后,再去调用uni.request做https请求,在证书和host匹配的情况下,android和ios设备都可以正常返回数据。异常情况考虑,手动更换了baidu.com的证书文件,转base64后测试uni.request的https请求,android设备日志输出:request:fail abort statusCode:-1 java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
ios设备依旧可以正常接收到接口返回,这个是第二个问题,不匹配正常应该返回会被拦截掉。
- 原生客户端android 和 ios分别使用okhttp和AfNetworking做了单向认证测试,更换证书文件后,都会因为不匹配拦截接口返回报错信息
3***@163.com (作者)
好的,等回复~感谢支持
2022-06-17 14:59