3***@163.com
3***@163.com
  • 发布:2022-06-17 13:40
  • 更新:2023-06-04 13:41
  • 阅读:2407

uni.configMTLS 调用https认证后,uni.request()拦截问题

分类:uni-app
  1. 前提是使用的服务端提供的域名证书,因为考虑其他第三方接入会有双向认证问题,所以只考虑使用客户端单向认证,官方文档上描述的是 “https 请求配置自签名证书” ,这个是否有区别?

  2. 首先使用的是只配置了host和服务端证书的base64格式调用认证 (域名xxx一下)

    uni.configMTLS({  
                    certificates:[{  
                        'host':'xxx.xxxsoft.com',  
                        'server': [this.serverBase64]  
                    }],  
                    success: (res) => {  
                        console.log(res)  
                    }  
                })

    无论使用的是匹配host的证书,或者不匹配的证书,返回都是{"errMsg":"configMTLS:ok","code":0} ,这是一个疑惑的地方,不是不匹配的话不是应该返回认证失败?

  3. 调用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设备依旧可以正常接收到接口返回,这个是第二个问题,不匹配正常应该返回会被拦截掉。

  1. 原生客户端android 和 ios分别使用okhttp和AfNetworking做了单向认证测试,更换证书文件后,都会因为不匹配拦截接口返回报错信息
2022-06-17 13:40 负责人:DCloud_iOS_XHY 分享
已邀请:
DCloud_Android_DQQ

DCloud_Android_DQQ

1

前提是使用的服务端提供的域名证书,因为考虑其他第三方接入会有双向认证问题,所以只考虑使用客户端单向认证,官方文档上描述的是 “https 请求配置自签名证书” ,这个是否有区别?

无区别。 自签名证书= 双向认证

2

无论使用的是匹配host的证书,或者不匹配的证书,返回都是{"errMsg":"configMTLS:ok","code":0} ,这是一个疑惑的地方,不是不匹配的话不是应该返回认证失败?

这里的返回结果只是证书设置是否成功,只有请求时才会真正校验证书

3
ios 同事稍后看一下

  • 3***@163.com (作者)

    好的,等回复~感谢支持

    2022-06-17 14:59

DCloud_iOS_XHY

DCloud_iOS_XHY

上传一个完整的示例工程我排查一下

晚郎

晚郎 - CV 开发

这个问题解决了吗?

  • 3***@163.com (作者)

    解决方案:在uni.request请求里面加header{

    "Connection":"close",

    }

    2022-08-11 10:23

1***@qq.com

1***@qq.com

配置uni.configMTLS后,调用uni.request接口时,是否需要设置sslVerify = true?

要回复问题请先登录注册