鸿蒙Next中axios如何进行证书校验

在鸿蒙Next中使用axios进行网络请求时,如何进行HTTPS证书校验?是否需要配置自定义证书或忽略校验?具体实现代码示例是什么?

2 回复

鸿蒙Next里用axios做证书校验?简单说就是配置httpsAgent时带上CA证书。不过注意:鸿蒙的网络安全机制比较严格,建议用系统自带的证书库,别自己瞎折腾,否则分分钟给你报“证书验证失败”——别问我怎么知道的(手动狗头)。

更多关于鸿蒙Next中axios如何进行证书校验的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,可以使用@ohos.net.http模块的http接口进行网络请求,并通过配置SSL证书校验来增强安全性。以下是具体实现方法:

1. 单向证书校验(验证服务器证书)

import http from '@ohos.net.http';

// 创建HttpRequest实例
let httpRequest = http.createHttp();

// 配置SSL证书(PEM格式)
let options = {
  method: 'GET',
  extraData: {
    "ca": "-----BEGIN CERTIFICATE-----\n<你的证书内容>\n-----END CERTIFICATE-----"
  }
};

// 发起请求
httpRequest.request('https://example.com', options, (err, data) => {
  if (err) {
    console.error('Request failed:', err);
    return;
  }
  console.log('Response:', data.result);
});

2. 双向证书校验(客户端+服务器双向验证)

import http from '@ohos.net.http';

let httpRequest = http.createHttp();

let options = {
  method: 'POST',
  extraData: {
    "ca": "-----BEGIN CERTIFICATE-----\n<根证书>\n-----END CERTIFICATE-----",
    "cert": "-----BEGIN CERTIFICATE-----\n<客户端证书>\n-----END CERTIFICATE-----",
    "key": "-----BEGIN PRIVATE KEY-----\n<客户端私钥>\n-----END PRIVATE KEY-----"
  }
};

httpRequest.request('https://secure-api.com', options, (err, data) => {
  // 处理回调
});

3. 忽略证书校验(仅开发测试使用)

let options = {
  method: 'GET',
  extraData: {
    "secureOptions": 0x1 // 相当于设置NODE_TLS_REJECT_UNAUTHORIZED=0
  }
};

注意事项:

  1. 生产环境必须使用正式证书,避免使用忽略校验选项
  2. 证书需转换为PEM格式,支持RSA/ECC算法
  3. 私钥需妥善保管,建议使用系统密钥库
  4. 证书链需要完整配置(根证书+中间证书)

完整示例流程:

  1. 将证书文件放入rawfile目录
  2. 读取证书内容:
import resourceManager from '@ohos.resourceManager';

const context = getContext(this) as common.UIAbilityContext;
let mgr = context.resourceManager;
let certData = await mgr.getRawFileContent('ca.pem');
let cert = String.fromCharCode.apply(null, certData);

这样即可在鸿蒙Next中实现安全的HTTPS证书校验机制。

回到顶部