欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
uni.configMTLS 只能用于 App 端(Android / iOS),不支持 HarmonyOS Next,也不支持任何小程序或 H5。
双向认证(mTLS)的完整流程需要同时满足「客户端验证服务器证书」和「服务器验证客户端证书」两件事,下面给出在 uni-app App 端可落地的做法与常见错误排查要点。
一、证书准备
- 服务器证书链:把服务器端完整的证书链(根证书 + 中间证书 + 服务器证书)合并到一个 .cer 文件里,命名为 server-chain.cer。
- 客户端证书:把 sign_cert.cer + 私钥导出成 client.p12,并记录导出时设置的密码。
- 把 server-chain.cer、client.p12 放到项目 static 目录(或打包后能访问到的路径)。
二、代码配置
在 App 启动时调用一次即可(不要重复调用):
// #ifdef APP-PLUS
uni.configMTLS({
certificates: [{
host: 'ezx.xxx.com', // 不要带 https:// 和端口
client: '/static/client.p12', // 客户端证书
clientPassword: '123', // p12 的导出密码
server: ['/static/server-chain.cer'] // 服务器端完整链
}],
success(res) {
console.log('configMTLS success', res.code);
},
fail(res) {
console.error('configMTLS fail', res);
}
});
// #endif
三、常见错误与解决
-
Trust anchor for certification path not found
- 说明客户端没有把服务器的根证书加入信任链。
- 把根证书、中间证书、服务器证书按顺序合并成同一个 .cer 文件,放到 server 数组里即可。
- 如果服务器证书是权威机构签发但仍报此错,检查系统时间是否正确,或把根证书手动加入 server 数组。
-
400 No required SSL certificate was sent
- 服务器开启了「必须验证客户端证书」但客户端没有成功发送。
- 确认 client.p12 里确实包含私钥和证书;确认 clientPassword 正确;确认 host 与请求地址完全一致(不要带端口)。
-
端口问题
- uni.configMTLS 的 host 只写域名,不要写端口;实际请求时 URL 里可以带端口,如
https://ezx.xxx.com:8443/api。
四、network_security_config.xml 不需要额外配置
uni-app 的 runtime 在 Android 端已经使用自定义的 TrustManager 加载你在 uni.configMTLS 中指定的 server 证书,network_security_config.xml 对 uni.request 无效,无需改动。
五、调试建议
只要证书链和 p12 本身没问题,并按上述方式配置,uni-app App 端即可实现双向认证。
2 个回复
Ask小助手
uni.configMTLS 只能用于 App 端(Android / iOS),不支持 HarmonyOS Next,也不支持任何小程序或 H5。
双向认证(mTLS)的完整流程需要同时满足「客户端验证服务器证书」和「服务器验证客户端证书」两件事,下面给出在 uni-app App 端可落地的做法与常见错误排查要点。
一、证书准备
二、代码配置
在 App 启动时调用一次即可(不要重复调用):
三、常见错误与解决
Trust anchor for certification path not found400 No required SSL certificate was sent端口问题
https://ezx.xxx.com:8443/api。四、network_security_config.xml 不需要额外配置
uni-app 的 runtime 在 Android 端已经使用自定义的 TrustManager 加载你在 uni.configMTLS 中指定的 server 证书,network_security_config.xml 对 uni.request 无效,无需改动。
五、调试建议
只要证书链和 p12 本身没问题,并按上述方式配置,uni-app App 端即可实现双向认证。
1***@qq.com (作者)
使用了uni.configMTLS(OBJECT)之后,之前封装的uni.uploadFile上传无法使用怎么处理呀?报400
要回复问题请先登录或注册
公告
更多>相关问题