【HarmonyOS NEXT】鸿蒙https请求跳过证书校验

https请求前,进行自签名证书加载

1.运行报错: error:{"code":2300060,"message":"SSL peer certificate or SSH remote key was not OK"},显示无法校验服务器身份,
2. 导致这个错误码的原因可能有以下几种:

服务器证书过期或者未被信任:如果服务器证书过期或者未被信任,客户端将无法验证证书的有效性,从而导致CURLE_PEER_FAILED_VERIFICATION错误。
服务器证书链不完整:如果服务器证书链不完整,客户端将无法验证证书的有效性,从而导致CURLE_PEER_FAILED_VERIFICATION错误。
客户端时间与服务器时间不一致:如果客户端的系统时间与服务器的时间不一致,客户端将无法验证证书的有效性,从而导致CURLE_PEER_FAILED_VERIFICATION错误。
针对这些问题,可以采取以下措施:
更新服务器证书:如果服务器证书过期或者未被信任,需要更新服务器证书。
完整的证书链:确保服务器证书链完整,包括中间证书。
同步客户端和服务器时间:确保客户端和服务器时间同步。
3、可将自签名证书放在项目rawfile文件目录下,通过demo写入工程机系统,在请求时设置capath参数指定证书写入的沙箱路径进,看是否可请求到结果

应用自己的沙箱路径
/data/app/el2/100/base/{包名}/haps/entry/files

https请求跳过证书校验方法:

将p12转换成pem尝试,p12转换pem可参考如下命令

## 生成时如果p12证书有密码,需要输入密码

## 生成 key文件命令
openssl pkcs12 -in client.p12 -out key.pem -nocerts -nodes
## 生成 证书文件命令
openssl pkcs12 -in client.p12 -out crt.pem -clcerts -nokeys

示例代码

// 引入包名
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@kit.BasicServicesKit';

// 每一个httpRequest对应一个HTTP请求任务,不可复用
let httpRequest = http.createHttp();
// 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
// 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
httpRequest.on('headersReceive', (header: Object) => {
  console.info('header: ' + JSON.stringify(header));
});

class Header {
  public contentType: string;

  constructor(contentType: string) {
    this.contentType = contentType;
  }
}

httpRequest.request(// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
  "EXAMPLE_URL",
  {
    method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
    // 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定
    extraData: 'data to send',
    expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型
    usingCache: true, // 可选,默认为true
    priority: 1, // 可选,默认为1
    // 开发者根据自身业务需要添加header字段
    header: new Header('application/json'),
    readTimeout: 60000, // 可选,默认为60000ms
    connectTimeout: 60000, // 可选,默认为60000ms
    usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定
    usingProxy: false, //可选,默认不使用网络代理,自API 10开始支持该属性
    caPath: '/path/to/cacert.pem', // 可选,默认使用系统预设CA证书,自API 10开始支持该属性
    clientCert: { // 可选,默认不使用客户端证书,自API 11开始支持该属性
      certPath: '/pat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConneyWu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值