uni-app uni.configMTLS安卓IOS兼容问题

uni-app uni.configMTLS安卓IOS兼容问题

开发环境 版本号 项目创建方式
Windows 3.2.9.20210927 HBuilderX

产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
手机系统:全部
手机厂商:华为
页面类型:vue
打包方式:云端


测试过的手机:

安卓 oppo find X ,ipad mini


示例代码:

uni.configMTLS({
certificates: [{
'host': '192.168.3.254',
'client': '/static/client.p12',
'clientPassword': '888888',
'server': ['/static/server.cer']
}],
success ({code}) {
console.log('configMTLS:' + code)
}
});

操作步骤:

自建双向认证https ssl证书 局域网 ip为域名


预期结果:

安卓报错


实际结果:

应该正常返回


bug描述:

uni.configMTLS 配置双向自定义签名
ios 正常
安卓报错

{
"errMsg": "request:fail abort statusCode:-1 Hostname 192.168.3.254 not verified:\n    certificate: sha256/q9ZFbx8F/a9Nxko9oJltogmZgFjx3zWRFdaTVoTIPzA=\n    DN: 1.2.840.113549.1.9.1=#161473616e64795f6875616d616f403136332e636f6d,CN=192.168.3.254,OU=ColorCat,O=ColorCat,ST=wuxi,C=cn\n    subjectAltNames: [192.168.3.254]"
}

更多关于uni-app uni.configMTLS安卓IOS兼容问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

uni.configMTLS({ certificates: [{ ‘host’: ‘192.168.3.254’, ‘client’: ‘/static/client.keystore’, ‘clientPassword’: ‘888888’, ‘server’: [’/static/server.cer’] }], success ({code}) { console.log(‘configMTLS:’ + code) }
改成.keystore报错 { “errMsg”: “request:fail abort statusCode:-1 sslSocketFactory == null” }

更多关于uni-app uni.configMTLS安卓IOS兼容问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我试了安卓和ios都是跟你相同的返回错误。 请问uni.configMTLS接口怎么使用呢,调用成功返回code为0,然后请求接口还是not verified。 是在app初始的时候调用一次configMTLS,后续就无需调用了吗?还是每次都需要调用configMTLS成功后再次调用请求接口?

调用一次

你好 请问解决了吗》和你一样的问题

一样的问题,使用官方基座 https请求正常,自定义基座https请求报 Trust anchor for certification path not found

请问楼主解决了吗?

同样的问题楼主解决了吗

问题分析:

根据您提供的错误信息,安卓端报错的核心原因是 SSL证书主机名验证失败。具体表现为:安卓系统严格验证证书的 subjectAltNames(SAN) 字段,而您的自签名证书可能未正确配置该字段或使用了IP地址作为主机名,导致安卓的安全机制拒绝连接。

关键点:

  1. 证书规范差异:iOS 对自签名证书的验证相对宽松,可能允许IP地址直接作为主机名;而安卓(尤其是高版本)要求证书必须包含正确的主机名或IP地址的SAN扩展。
  2. 错误提示解读Hostname 192.168.3.254 not verified 表明安卓无法在证书中找到与该IP地址匹配的有效SAN条目。

解决方案:

  1. 重新生成证书

    • 在创建证书时,确保将IP地址 192.168.3.254 添加到SAN字段中。例如,使用OpenSSL生成证书时,需在配置文件中明确指定:
      subjectAltName = IP:192.168.3.254
      
    • 建议同时为域名(如有)和IP地址配置SAN,以兼容更多场景。
  2. 检查证书内容

    • 使用以下命令验证证书是否包含正确的SAN信息:
      openssl x509 -in server.cer -text -noout | grep -A 1 "Subject Alternative Name"
回到顶部