2***@qq.com
2***@qq.com
  • 发布:2026-03-17 19:23
  • 更新:2026-03-17 20:15
  • 阅读:14

鸿蒙使用uni.configMTLS()双向认证问题

分类:HBuilderX


各位好,请问鸿蒙使用uni.configMTLS()和云端进行双向认证TLS,证书如何配置呀

试了p12 + password + root.pem/servier.cer ,以及 device_cert.pem + device_key.pem + password + root.pem/servier.cer,都是报错:mTLS 请求失败 {errMsg: "request:fail SSL peer certificate or SSH remote key was not OK"},难道鸿蒙不支持配置server吗?

p12 + password + root.pem这一套在安卓端测试是通过的

其中
p12:叶子证书+中间证书
device_cert.pem: 叶子证书+中间证书+根证书
root.pem/server.cer:只包含一个根CA


希望各位大佬能够解答一下,感激不尽

2026-03-17 19:23 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。

根据知识库中的文档说明,针对鸿蒙(HarmonyOS Next)平台使用 uni.configMTLS() 的配置问题,需要特别注意以下关键差异:

关键问题:HarmonyOS Next 不支持 server 参数

知识库明确说明,在 uni.configMTLScertificate 参数中,server(服务器端证书)参数不支持 HarmonyOS Next 平台。这与 iOS/Android 平台不同,后两者支持通过 server 字段配置自签名服务器证书进行双向认证。

鸿蒙平台正确的证书配置方式

在 HarmonyOS Next 上,需要使用证书路径方式配置,且客户端证书和秘钥需要分开指定(要求 HBuilderX 4.31+):

uni.configMTLS({  
    certificates: [{  
        'host': 'www.test.com',  
        // 客户端证书路径(仅证书,不含私钥)  
        'client': '/static/device_cert.pem',  
        // 证书秘钥路径,鸿蒙平台专用参数(HBuilderX 4.31+)  
        'keyPath': '/static/device_key.pem',  
        // 秘钥密码(鸿蒙上对应证书秘钥的密码)  
        'clientPassword': 'your_password'  
        // 注意:不要配置 server 参数,鸿蒙不支持  
    }],  
    success ({code}) {  
        console.log('mTLS 配置成功', code);  
    },  
    fail (err) {  
        console.error('mTLS 配置失败', err);  
    }  
});

证书格式要求

  1. 证书文件格式:将证书文件放入工程的 static 目录,填写文件路径如 '/static/client.pem'
  2. Base64 格式:如需使用字符串,需添加前缀 'data:cert/pem;base64,' + 证书内容的 base64 编码
  3. 分离要求:鸿蒙平台要求客户端证书(client)和私钥(keyPath)必须是独立的文件路径,不支持 p12 格式(p12 格式仅 iOS 支持)

故障排查建议

报错 "SSL peer certificate or SSH remote key was not OK" 通常是因为:

  • 配置了鸿蒙不支持的 server 参数导致校验失败
  • 证书与私钥不匹配或格式不正确
  • 使用了 p12 格式而非分离的 pem 格式

请确保证书文件包含完整的证书链(叶子证书+中间证书),并移除 server 配置项后重试。详细 API 说明请参考 uni.configMTLS 文档

内容为 AI 生成,仅供参考
2***@qq.com

2***@qq.com (作者)


按照你说的配置了,报错:{errMsg: "request:fail Problem with the local SSL certificate"},
是对device_cert.pem有什么要求吗?
device_cert.pem: 叶子证书+中间证书+根证书

要回复问题请先登录注册