鸿蒙Next中如何配置capath以支持http请求

在鸿蒙Next开发中,使用HttpURLConnection发起HTTPS请求时遇到证书校验问题。系统提示需要配置capath来指定可信CA证书路径,但文档中未找到具体操作方法。请问应该如何正确配置capath?是否需要在config.json中声明权限或添加特定目录结构?如果使用自签名证书又该如何处理?希望能提供详细的配置示例和注意事项。

2 回复

在鸿蒙Next中配置CA证书路径(capath)支持HTTP请求,可通过以下步骤实现:

  1. 准备CA证书:将需要的根证书(.crt或.pem格式)放入项目resources/rawfile目录。

  2. 配置网络权限:在module.json5中添加网络权限:

{
  "module": {
    "requestPermissions": [{
      "name": "ohos.permission.INTERNET"
    }]
  }
}
  1. 代码中配置CA路径
import http from '@ohos.net.http';

// 创建HTTP请求
let httpRequest = http.createHttp();

// 设置CA证书路径
let options = {
  caPath: 'resources/rawfile/root_ca.crt' // 证书文件路径
};

// 发起请求
httpRequest.request(
  'https://example.com',
  options,
  (err, data) => {
    // 处理回调
  }
);

注意事项:

  • 确保证书文件路径正确
  • 仅支持PEM格式证书
  • 生产环境建议使用系统预置证书
  • 可通过caPath数组配置多个证书

这样即可在鸿蒙应用中安全地发起HTTPS请求。

更多关于鸿蒙Next中如何配置capath以支持http请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,配置CAPath(证书信任路径)以支持HTTP请求,通常涉及设置网络安全配置或自定义证书。以下是具体步骤和示例代码:

1. 配置网络安全策略

module.json5 文件中添加网络安全配置,允许HTTP请求并指定证书:

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ],
    "metadata": [
      {
        "name": "ohos.network.security.policy",
        "value": "{ \\"cleartextTraffic\\": true, \\"trustedCa\\": \\"system\\" }"
      }
    ]
  }
}
  • cleartextTraffic: true:允许HTTP明文传输(仅测试环境使用)。
  • trustedCa: "system":使用系统默认证书。

2. 自定义证书路径

如需指定自定义CA证书(如 ca.pem):

  1. 将证书文件放入 resources/rawfile/ 目录。
  2. 在代码中加载证书并配置HTTP客户端:
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 从rawfile读取证书
let context = getContext(this) as common.UIAbilityContext;
let caPath = context.resourceManager.getRawFdSync('ca.pem'); // 获取文件描述符

// 创建HTTP请求配置
let options: http.HttpRequestOptions = {
  method: http.RequestMethod.GET,
  extraData: {
    caPath: caPath.fd // 指定证书路径
  },
  // 其他配置(如URL、头信息等)
};

// 发送请求
let httpRequest = http.createHttp();
httpRequest.request('https://example.com', options, (err: BusinessError, data: http.HttpResponse) => {
  if (err) {
    console.error('Request failed: ' + JSON.stringify(err));
    return;
  }
  console.info('Response: ' + JSON.stringify(data));
});

注意事项:

  • 生产环境:避免启用 cleartextTraffic,应使用HTTPS。
  • 证书格式:确保证书为PEM格式,且路径正确。
  • 权限:需声明 ohos.permission.INTERNET 网络权限。

通过以上步骤,即可在鸿蒙Next中配置CAPath以支持安全的HTTP/HTTPS请求。

回到顶部