欢迎到专业群( HBuilderX技术交流群 ) 咨询,群中有相关专业的管理员和群友。
根据知识库中的文档说明,针对鸿蒙(HarmonyOS Next)平台使用 uni.configMTLS() 的配置问题,需要特别注意以下关键差异:
关键问题:HarmonyOS Next 不支持 server 参数
知识库明确说明,在 uni.configMTLS 的 certificate 参数中,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);
}
});
证书格式要求
- 证书文件格式:将证书文件放入工程的
static 目录,填写文件路径如 '/static/client.pem'
- Base64 格式:如需使用字符串,需添加前缀
'data:cert/pem;base64,' + 证书内容的 base64 编码
- 分离要求:鸿蒙平台要求客户端证书(
client)和私钥(keyPath)必须是独立的文件路径,不支持 p12 格式(p12 格式仅 iOS 支持)
故障排查建议
报错 "SSL peer certificate or SSH remote key was not OK" 通常是因为:
- 配置了鸿蒙不支持的
server 参数导致校验失败
- 证书与私钥不匹配或格式不正确
- 使用了 p12 格式而非分离的 pem 格式
请确保证书文件包含完整的证书链(叶子证书+中间证书),并移除 server 配置项后重试。详细 API 说明请参考 uni.configMTLS 文档。